Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten je Kunde suchen und in Arbeitsmappe kopieren

Daten je Kunde suchen und in Arbeitsmappe kopieren
18.02.2019 18:58:38
Patrik
Hallo und Guten Abend,
ich habe mir per Macrorecorder und Internet eine Tabelle zusammengebastelt um mir die tägliche Arbeit zu erleichtern. Jetzt bin ich aber an meine Grenze gestoßen und finde auch nichts im Internet. Ich denke das man hier mit Schleifen arbeiten muss.
Ich versuche mal mein Problem zu beschreiben:
Ich möchte aus der Arbeitmappe "Wartungsarbeiten.xlsm" aus dem Tabellenblatt "Wartung" ca. 1.300 Datensätze von verschiedene Kunden bestimmte Daten je Einzelkunde in die Tabelle Arbeitsprotokoll eintragen (benötigt der Handwerker für seine Arbeit).
Die Daten der Kunden sind Zeilenweise in der Tabelle erfasst, ich habe zur Identifizierung jedem Kunden mit Hilfe einer Formel eine Zahl zugewiesen von 1 bis ... Kundenanzahl ist variabel.
Der Kunde Nr. 1 hat zum Beispiel 4 Datensätze (Zeilen) der Kunde Nr. 212 hat 67 Datensätze (Zeilen). Damit ich nicht von Hand die notwendigen Informationen von jedem Kunden in die Tabelle "Arbeitsprotokoll" schreiben muß wollte ich versuchen das Problem mit VBA zu lösen.
Folgende Lösung habe ich schon - ich Filter die Datei in der Spalte "Kundennummer" nach dem Eintrag "1" dann starte ich mein Macro dieses kopiert dann die Daten in eine Hilfstabelle und von dort in die Vorlage Arbeitsprotokoll.xlsx diese wird dann mit dem Eintrag in der Zelle A11 "Protokoll_Kunde_1".xlsx" abgespeichert
Das müsste ich aber bei dann jedes Jahr bei ca. 350 Kunden durchführen
Mein VBA Wunschlösung:
1.) Schritt
Öffne die Vorlage "Arbeitsprotokoll.xlsx"
2.) Schritt (Beginn Schleife)
Suche in dem Tabellenblatt "Wartung" in der Spalte "I" ab Zeile 7 (In Zeile 6 steht die Spaltenbezeichnung "Kundennummer") den ersten Kunde hier mit der zugewiesenen Nummerierung "1" dieser Kunde z.B 4 Zeilen mit Daten
3.) Schritt
kopiere aus den Zeilen von dem Kunde "1" den Inhalt der Zellen aus Spalte "A", "C" und "G" alle betreffenden Werte und füge die Werte (ohne Formate) in die Tabelle "Arbeitsprotokoll.xlsx" in das Blatt" Protokoll_Wartung" in die Zelle "A13", Zelle "B13" und Zelle "C13" (nach unten sind diese Spalten leer)
4.) Schritt
kopiere aus der ersten Zeile vom Kunde "1" den Inhalt der ersten Zellen aus Spalte "D", "E", "F" und "K" füge die Werte (ohne Formate) in die Tabelle "Protokoll.xlsx" Blatt "Protokoll_Wartung" Zelle "H9", Zelle "P9", Zelle "H10", und Zelle "A11"
5.) Schritt
Speichere und schließe die Tabelle mit dem Inhalt aus der Zelle "A11" als DateiName in das Verzeichnis C.... (kann ich eintragen)
...
Beginn Wiederholung
1.) Schritt
Öffne die Vorlage "Arbeitsprotokoll.xlsx"
2.) Schritt (Beginn Schleife)
......nächster Kunde
Ich hoffe ich habe es einigermaßen beschrieben.
Bitte daran denken ich habe mein wissen nur über Macrorecorder und Internet bin also ein nicht-wissender
Gruß Patte

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
18.02.2019 19:16:43
onur
Nicht beschreiben, einfach Datei (oder Beispeldatei) posten.
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
18.02.2019 22:42:28
onur
Wieso hast du als Kundennummer Fliesskommazahlen?
Wieso sind die Dateinamen gefaked?
Es gibt nur 4 (bis Protokoll_Kunde_4).
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 03:53:41
Patrik
Hallo onur,
danke das du dich mit dem Thema befasst.
Zur 1.) Frage
Die Fliesskommazahlen habe ich zur Unterscheidung der einzelnen Kunden im Vorfeld berechnet.
Die Parameter hierzu waren die ersten 3 Zahlen in der Spalte "TK-PLatz" und der Name in der Spalte "Betreiber"
Zur 2.) Frage
Was meinst du mit gefaked?
Die Dateien habe ich Zuhause schnell erstellt um aufzuzeigen wo/welche Info aus den Spalten aus der Datei "Wartungsarbeiten.xlsm" (farbig) in die Vorlage "Arbeitsprotokoll.xlsx" eingetragen werden soll, die Vorlage "Arbeitsprotokoll.xlsx" sollte dann mit dem Zelleninhalt (A11) als Dateiname hier "Protokoll_Kunde_1" abgespeichert werden. Der Dateiname ist nicht so wichtig brauche eine Unterscheidung der Kunden.
Zur 3.) Frage
Zur Zeit habe ich in der Originaldatei ca. 289 verschiedene Kunden (bis Protokoll_Kunde_289) in 1.400 Zeilen die Kunden kommen und gehen und sind Variabel genau wie auch die Leistungszeilen. Ich habe bei 4 Kunden aufgehört da sie zum aufzeigen der Syntax wohl ausreichen.
Für mich stellt sich nur die Frage wie kann ich der Schleife mitteilen das sie die benötigte Daten (farbig) mit Hilfe der Unterscheidung (Fliesskommazahlen) in der Spalte "Kundennummer" in das Arbeitsprotokoll überträgt, diese dann mit dem gefakten Dateinamen abspeichert. Wenn alles gut läuft habe ich dann auf einen Schlag 289 Arbeitprotokolle was meine Arbeit sehr erleichtern würde.
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 06:29:04
onur
Da du die Fliesskommazahlen auch noch als Ganzzahlen "getarnt" hat, ist das auch noch nicht sofort zu erkennen und die Fehlersuche geht los.
Mit gefaked meinte ich, dass man mit solchen Datensätzen kein(e) lauffähiges Makro(s) schreiben kann und sich noch wundert, woher die Fehler kommen.
Die Pfade musst du selber anpassen.
https://www.herber.de/bbs/user/127749.xlsx
https://www.herber.de/bbs/user/127750.xlsm
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 06:32:10
onur
Die Daten müssen nach Kundennummer sortiert sein.
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 06:34:14
onur
UND du musst noch die Schleifenlänge anpassen (auf 2000 erhöhen), sie ist für Testzwecke auf ein paar Dutzend beschränkt.
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 07:29:46
Patrik
Hallo Onur,
das mit dem Fließkomma tut mir Leid.
Danke für die schnelle Antwort.
Dein Code werde ich im laufe des Tages prüfen.
MfG
Patte
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 12:27:22
Bernd
Servus Patte,
noch eine Version zum testen für dich:

Sub Arbeitsprotokoll()
Dim wbq1 As Workbook
Dim wbq2 As Workbook
Dim wbz As Workbook
Dim wsq1 As Worksheet
Dim wsq2 As Worksheet
Dim wsz As Worksheet
Dim intLZ As Integer
Dim intLZwsz As Integer
Dim i As Integer
Dim y As Integer
Dim maxKunden As Integer
Dim Speicherpfad As String
Dim strFilename As String
Application.ScreenUpdating = False
Set wbq1 = ThisWorkbook
Set wbq2 = Workbooks.Open("C:\Test\Arbeitsprotokoll.xlsx")
Set wsq1 = wbq1.Sheets("Wartung")
Set wsq2 = wbq2.Sheets("Protokoll_Wartung")
Speicherpfad = wbq1.Path
If Right(Speicherpfad, 1)  "\" Then Speicherpfad = Speicherpfad & "\"
With wsq1
intLZ = .Cells(Rows.Count, 9).End(xlUp).Row
maxKunden = Application.WorksheetFunction.Max(.Range("I7:I" & intLZ))
End With
For i = 1 To maxKunden
strFilename = "Protokoll_Kunde_" & i & ".xlsx"
wbq2.SaveCopyAs Speicherpfad & strFilename
Set wbz = Workbooks.Open(Speicherpfad & strFilename)
Set wsz = wbz.Sheets("Protokoll_Wartung")
With wsz
.Cells(11, 1).Value = strFilename
For y = 7 To intLZ
If wsq1.Cells(y, 9).Value = i Then
intLZwsz = wsz.Cells(Rows.Count, 1).End(xlUp).Row + 1
.Cells(intLZwsz, 1).Value = wsq1.Cells(y, 1).Value
.Cells(intLZwsz, 2).Value = wsq1.Cells(y, 3).Value
.Cells(intLZwsz, 3).Value = wsq1.Cells(y, 7).Value
End If
Next y
End With
wbz.Close True
Set wsz = Nothing
Set wbz = Nothing
Next i
wbq2.Close False
Application.ScreenUpdating = True
Set wsq1 = Nothing
Set wsq2 = Nothing
Set wbq1 = Nothing
Set wbq2 = Nothing
End Sub
Grüße, Bernd
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 18:02:23
Patrik
Hallo Bernd,
auch dir vielen Dank das du dich ebenfalls dem Thema angenommen hast.
Habe kurz getestet ist in der For schleife endlos gelaufen, vielleicht habe ich auch beim Eintragen des Pfades was verkehrt gemacht.
Leider kenne ich mich zu wenig aus um zu bewerten woran es hängt.
MfG
Patte
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 17:51:12
Patrik
Hallo Onur,
deine Schleife hat suuuper geklappt. Es ist faszinierend zuzusehen wie sich die fast 300 Protokolle selber schreiben, echt Genial.
Habe deine Syntax noch ergänzt mit der Definition für die Anpassung des Druckbereiches
With ActiveSheet
zm = .Columns("A:P").Find(What:="BS540", searchdirection:=xlPrevious).Row
.PageSetup.PrintArea = "$A$1:$P$" & zm
End With

Noch eine Frage könnte man das Protokoll zusätzlich noch als PDF speichern
Habe es probiert mit funktioniert aber nicht
Ich weis es ist dilettantisch im Internet habe ich gesehen das eine viel Umfangreichere Syntax notwendig ist, wollte es aber Verständnis halber trotzdem einfügen.
''''''''''''''''''''''''''''''''''''
path3 =
C:\Users\STRACHEP\PatrikseinePlattform\INFORMATIONSPLATTFORM\VFR\NEU_VFR_INFO_PLATTFORM\Wartungstermine\Wartung_PDF_zum_versenden\"
ActiveWorkbook.SaveAs path3 & nam & ".pdf"
''''''''''''''''''''''''''''''''''''
Danke du hast mir sehr geholfen
MfG
Patte
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 18:11:04
onur
Hier ein Beispiel:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Tracy\Desktop\test.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
19.02.2019 19:18:18
Patrik
Hallo onur,
danke für die schnelle Antwort.
In dem Pfad steht "Test.pdf" er müsste aber den gleichen Dateiname übernehmen wie die zuvor gespeicherte Exceldatei
ActiveWorkbook.SaveAs path2 & nam & ".xlsx"
der Eintrag & ".xlsx" habe ich in deiner Syntax ebenfalls nachträglich ergänzt
nur halt diesmal als .pdf
MfG
Patte
Anzeige
AW: Daten je Kunde suchen und in Arbeitsmappe kopieren
20.02.2019 17:31:56
Patrik
Hallo Onur,
wollte mich nur noch mitteilen das das speichern als PDF ebenfalls geklappt hat.
Alles super, Danke
MfG
Patte

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige