Anzeige
Archiv - Navigation
1908to1912
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

VBA Export in mehrere Dateien

VBA Export in mehrere Dateien
28.11.2022 13:40:45
Alexander
Hallo zusammen,
Ich komme leider bei einem Problem nicht weiter.
Ich muss aus einer Excel Datei mehrere Dateien Tab getrennt speichern.
Mein Problem ist, dass in der ersten Spalte die Kategorie der Artikel steht.
zB.
Getränke, Gewürze....
in der zweiten Spalte steht dann der Artikeltext.
Jetzt muss ich pro Kategorie (Spalte 1) eine txt Datei erstellen.
Ich bin auf diesen Code gekommen ,wo alles in eine Datei geschrieben wird.

Sub exportieren()
Dim varSpalten
Dim intSpalte As Integer, lngZeile As Long
Dim objQuellblatt As Worksheet
Dim objZielblatt As Worksheet
Dim strPfad As String
Dim varTmp, strOut As String
Open "\\Server\Daten\00 dateiname.txt" For Output As #1  'anpassen
'Datenquelle festlegen
Set objQuellblatt = ThisWorkbook.Sheets("Gesamt")
varSpalten = Array(1, 8, 2, 3, 10, 12, 14, 15, 16, 17, 18, 19, 20, 24, 25, 23)
varTmp = objQuellblatt.UsedRange
For lngZeile = 3 To UBound(varTmp)
strOut = ""
If Len(varTmp(lngZeile, varSpalten(0))) > 0 Then
For intSpalte = 0 To UBound(varSpalten)
strOut = strOut & vbTab & varTmp(lngZeile, varSpalten(intSpalte))
Next intSpalte
strOut = Mid(strOut, 2)
Print #1, strOut
End If
Next lngZeile
Close #1
End Sub
Könnt Ihr mir hier bitte weiterhelfen.
Vielen Dank für eure Unterstützung und einen schönen Tag noch
Lg
Alexander

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Export in mehrere Dateien
28.11.2022 14:16:52
ralf_b
Wenn du das "mußt", dann hat dir sicherlich Jemand dies aufgetragen. Weis dieser Jemand, das du hiermit überfordert bis?
Wenn ja, solltet ihr euch unterhalten, und wenn nein, dann auch.
Zu deinen Dateien. Bestimmt sollen alle Artikelvorkommen der jeweiligen Kategorien in die jeweiligen Dateien geschrieben werden. Deine Aufgabe nur Dateien zu erstellen für die Kategorien. wäre nur die halbe Miete.
hier ein unbeholfener Versuch der Umsetzung

Sub exportieren()
Dim lngZeile&, i&
Dim varTmp, strOut As String
Dim dic As Object
Set dic = CreateObject("Scripting.dictionary")
'Datenquelle festlegen
varTmp = ThisWorkbook.Sheets("Gesamt").UsedRange
For i = LBound(varTmp) To UBound(varTmp)
If Not dic.exists(varTmp(i, 1)) Then
dic.Add varTmp(i, 1), 1
Open "\\Server\Daten\" & varTmp(i, 1) & ".txt" For Output As #1 'anpassen
For lngZeile = LBound(varTmp) To UBound(varTmp)
If varTmp(i, 1) = varTmp(lngZeile, 1) Then
strOut = varTmp(i, 1) & vbTab & varTmp(i, 2)
Print #1, strOut
End If
Next lngZeile
Close #1
End If
Next
End Sub

Anzeige
AW: VBA Export in mehrere Dateien
28.11.2022 15:49:16
Alexander
Hallo,
Vielen Dank hat sehr gut funktioniert
Schöne grüße
Alexander
AW: VBA Export in mehrere Dateien
28.11.2022 16:13:58
Alexander
Hallo noch mal,
Ich war zu voreilig.....
Ich bekomme jetzt die einzelnen Dateien wie gewünscht, es steht jedoch immer der gleiche Artikel in der Datei, so oft, wie die Kategorie vorkommt.
Könntest du mir bitte noch zeigen, wie die Artikel da rein kommen?
Musterdatei: https://www.herber.de/bbs/user/156431.xlsx
Ich muss weil ich es mir einfacher machen will, die Daten 2x im Jahr zu verarbeiten, anstatt die Listen manuell zu trennen.
Vielen Dank und schöne Grüße
Alexander
Anzeige
AW: VBA Export in mehrere Dateien
28.11.2022 16:35:06
Yal
Hallo Alexander,
klarer Fall: diese Zeilen

              strOut = varTmp(i, 1) & vbTab & varTmp(i, 2)
Print #1, strOut
müssen so angepasst werden:

              strOut = varTmp(lngZeile, 1) & vbTab & varTmp(lngZeile, 2)
Print #1, strOut
Andere Möglichkeit, inspiriert von dem Code von Ralf, wollte ich eine Dictionary of Dicitonary probieren:

Sub exportieren()
Dim i, j
Dim arrQuelle
Dim arrTmp
Dim dic As Object
Dim subDic As Object
Set dic = CreateObject("Scripting.dictionary")
'Datenquelle festlegen
arrQuelle = ThisWorkbook.Sheets("Gesamt").UsedRange
'Datenquelle durchgehen und in passende Haupt-Dic zuordnen
For i = LBound(arrQuelle) To UBound(arrQuelle)
If Not dic.exists(arrQuelle(i, 1)) Then
Set subDic = CreateObject("Scripting.dictionary")
subDic.Add "z" & i, Joiner(arrQuelle, i)
dic.Add arrQuelle(i, 1), subDic
Else
dic(arrQuelle(i, 1)).Add "z" & i, Joiner(arrQuelle, i)
End If
Next i
'Jede "Haupt"-Dic Eintrag in einer Datei, wo der Inhalt der SubDic abgelegt wird.
For Each i In dic.keys
Open "\\Server\Daten\" & i & ".txt" For Output As #1 'anpassen
For Each j In dic(i).keys
Print #1, dic(i)(j)
Next j
Close #1
Next i
Set dic = Nothing
End Sub
Private Function Joiner(Arr, Zeile, Optional Trenner = ";")
Dim i
Dim erg
For i = LBound(Arr, 2) To UBound(Arr, 2)
erg = erg & Trenner & Arr(Zeile, i)
Next
Joiner = Mid(erg, Len(Trenner) + 1)
End Function
Da "Joiner" an zwei Stellen geraucht wird, habe ich es ausgelagert.
VG
Yal
Anzeige

222 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige