online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Julia_28 vom 29.05.2020, 15:35 Options

zeilen in denen ein bestimmter Name vorkommt in eine bestimmte Exceldatei kopieren

Hallo an Alle,

ich habe eine Excel Datei in der Datensätze für bestimmte User sind.
Meier -->
Huber -->
Hinz ->
Huber-->

Jeder User darf nur seine Zeilen sehen, und dazu sollen diese in eine Exceldatei kopiert werden auf die dann nur der User zugriff hat.

Nach möglichkeit sollte das automatisch gehen.

So wie bei Verknüpfungen in Zellen in anderen Dokumenten

Der User öffnet seine Datei und bekommt immer die aktuellen Daten.

Leider ist die Anzahl der Zeilen mit Namen nicht immer gleich.
So das, wie ich denke eine Art "If Huber dann copy to "Huber.xls"

Leider habe ich so gar keine Erfahrung mit Programmierung,
und diese Ewige kopiererei is sowas von aufwendig u. dauert Stunden.

Ich habe schon tolle Lösungen hier gesehen, für Ähnlich Problem, aber ich schaff es leider nicht die für meinen Bedarf abzuändern.

Wäre toll wenn hier jemand eine Lösung weis.

Ich sag schon mal, vielen Dank und viele Grüße
Julia


In dieser Datei sind z.B. 3000 Zeilen,
für 30 User. Nun sollen immer automatsch die für den User bestimmten
Zeilen in ein neues Excel-Dok eportiert und für den User breitgestellt werden.

Ich hab schon mit Excel-Abrage probiert, aber da kann der User ja dann trozdem
die ganz Tabelle und nicht nur seine Daten sehen.

Momentan kopiere ich alle sehr sehr mühsam von Hand, was super aufwendig ist.

Hat hier jemand eine Idee wie das zu lösen ist, ich finde es
klingt eigentlich ganz einfach, aber leider kenne ich mit der Programmererei nicht
besonders gut aus.

Vielen Dank schon mal
Grüße Anrie


Antwort schreiben

Antwort 1 von lorf55 vom 25.06.2020, 21:02 Options

Hallo Julia und Anrie,
ich habe mal ein Makro gebastelt, dass das macht, was ihr wollt (hoffe ich). Da ich nicht weiß,von wo bis wo ihr genau kopieren wollt, habe ich in der 3. Zeile des makros
Range("A1", "B8").Select 
stehen. Da müsst ihr A1 und B8 an eure Tabelle anpassen. Das makro muss in ein Modul (Alt+F11, Einfügen - Modul).

In Blatt1 meiner testdatei steht
    Name Wert
    Franz 67
    Huber 34
    Huber 56
    Karl 45
    Meier 45
    Meier 56


Sub Makro1()
'hier den Kopierbereich festlegen
Range("A1", "B8").Select

'>>>> ab hier gibts nichts mehr zu ändern
Dim R As Range
Dim name As String
Dim datei As String

Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Set R = Application.Selection


For i = R.Row + 1 To R.Rows.Count
  name = R.Cells(i, R.Column)
  'Schauen, ob der name nochmal vorkommt, um mehrere Zeilen auf einmal zu kopieren
  For j = i + 1 To R.Rows.Count
      If name <> R.Cells(j, R.Column) Then
        j = j - 1
        Exit For
      End If
  Next j
  'Der Kopierbereich von Zeile i bis zeile j innerhalb der selektierten Spalten
  Range(R.Cells(i, R.Column), R.Cells(j, R.Columns(R.Columns.Count).Column)).Select
  Selection.Copy
  'Startzeile für das nächste Kopieren setzen
  i = j
  'Ist die Exceldatei des MA vorhanden
  datei = Dir(name & ".XLS")
  ' Wenn das Feld name leer ist, passiert nichts
  If name <> "" Then
    If datei = "" Then
  '     In neue exceldatei kopieren bei neuem MA-namen
        Set NewBook = Workbooks.Add
        Worksheets("Tabelle1").Activate
        ActiveSheet.Paste Destination:=Cells(1, 1)
        NewBook.SaveAs Filename:=name & ".XLS"
        Workbooks(name & ".XLS").Close
      Else
  '     In vorhandene Exceldatei kopieren
        Workbooks.Open name & ".XLS"
        Worksheets("Tabelle1").Activate
        letzteZeile = Range("A65536").End(xlUp).Row
        ActiveSheet.Paste Destination:=Cells(letzteZeile + 1, 1)
        Workbooks(name & ".XLS").Close SaveChanges:=True
    End If
  End If
  
Next i
' das wars vom Mars
End Sub


Gruß
lorf

PS: Mir fällt gerade kein brauchbarer Uploaddienst ein, da muss denn so gehen.

Antwort 2 von nighty vom 26.06.2020, 21:18 Options

hi all

selectionen und activierungen sind ueberfluessig,bitte direkte zuweisungen

statt einer normalen schleife wuerde sich eine dynamische schleife mit der findfunction anbieten,die dann nur soviel durchlaeufe hat wie es funde gibt,dadurch waere eine sortierung auch nicht unbedingt notwendig

gruss nighty

Antwort 3 von lorf55 vom 27.06.2020, 11:04 Options

Hallo nighty,
Zitat:
selectionen und activierungen sind ueberfluessig,bitte direkte zuweisungen

Ja, mag sein. Gibts hier eigentlich einen VBA-Style-Guide, wo man das mal nachschlagen kann?

Zitat:
statt einer normalen schleife wuerde sich eine dynamische schleife mit der findfunction anbieten,die dann nur soviel durchlaeufe hat wie es funde gibt,dadurch waere eine sortierung auch nicht unbedingt notwendig

Das bietet sich sicherlich an. Vielleicht ist es sogar etwas schneller (wobei die 5 Sekunden mehr oder weniger auch keinen interessieren).

Aber sag mal, wenn du es so genau weißt, denn hätte es sich doch schon längst mal angeboten, mal schnell was aus dem Ärmel zu schütteln, die Frage ist ja nun mehr als 3 Wochen alt, oder?. Oder hätte sie besser unbeantwortet bleiben sollen?

Gruß
lorf

Antwort 4 von nighty vom 27.06.2020, 19:48 Options

hi all

warum antworten wenn du hoch motiviert bist,so geb ich dir ein paar tips,und der rest ist fuer die datenbank.du wirst gar nicht glauben wieviele user darauf zugreifen,daher spielt es generell keine rolle wie alt eine frage ist

dir noch viel spass beim tuefteln

gruss nighty

Antwort 5 von nighty vom 28.06.2020, 14:56 Options

hi lorf :-)

dann noch dies fuer dich

gruss nighty

wenn du die findfunction mit einer set variablen definierst kommst du bei fund ueber diese variable an einige daten ,wie z.b.

variable.row wie auch variable.column

diese kannst du nun der variablen der for next schleife uebergeben und hast somit eine dynamische schleife

bei deinen grundkenntnissen sollte es nun kein problem mehr sein selbiges umzusetzen

schneller waere dann nur noch ein array oder dictionary object

wobei das array deine nachste uebungsaufgabe sein sollte und in der excelhilfe genuegend beschrieben ist

Ähnliche Themen

zeilen kopieren
Obelix26  21.02.2007 - 83 Hits - 1 Antwort

Excel alle Zeilen löschen außer...
Fridolin123  25.03.2007 - 124 Hits - 5 Antworten

Anzahl von vorkommenden Begriffen ausgeben
Daniel_Berlin  14.08.2007 - 15 Hits - 3 Antworten

Bestimmte Zeilen neu zusammenführen
McZap  10.02.2008 - 64 Hits - 2 Antworten

Joker bzw. Platzhalter in Excel
Mafo4711  23.06.2008 - 39 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026