vorab, bin zwar recht flott mit Excel allerdings bei VBA ein ziemlicher Neuling.
Ich habe hier ein recht umfangreiches Excelsheet daß über gut 100 Spalten geht. Das dient zur Anlage von neuen Artikeln im Sortiment. Innerhalb des Sheets sind ziemlich viele ausgeblendete Spalten, die für den späteren Import über eine definierte Schnittstelle ins Warenwirtschaftssystem bestimmt sind und mit fixen (gesperrten) Werten befüllt sind (oder auch leer, da die Schnittstelle eine bestimmte Menge Felder in bestimmter Reihenfolge braucht)
Nun habe ich ein Makro (mithilfe Google) zusammengestellt, daß mir das Makro in 6 .txt- Dateien exportiert :
Sub Export()
Dim i As Long
Dim Zeichen As String
Dim strTemp As String
Dim strTrennzeichen As String
Dim strErsetzen As String
Dim strMappenpfad As String
Dim strTempDateiPfad As String
Dim strArtMEH As String
Dim strArtLIE As String
Dim strArtEK As String
Dim strArtVK As String
Dim strArtEAN As String
Dim Zeilenanzahl As Integer
Dim Anleger As String
Dim z As Integer
Dim c As Integer
Dim Meh As String
Dim Bereich1 As Object
Dim Bereich2 As Object
Dim Bereich3 As Object
Dim Bereich4 As Object
Dim Bereich5 As Object
Dim Bereich6 As Object
z = "4"
c = "1"
Anleger = "ZEN06945"
strErsetzen = ","
strMappenpfad = ActiveWorkbook.Path
strMappenpfad = InputBox("In welchem Ordner sollen die Dateien gespeichert werden (ohne _
Dateinamen)?", "Dateien-Pfad", strMappenpfad)
If strMappenpfad = "" Then Exit Sub
strArtikel = "Artikelstamm.txt"
strArtMEH = "ArtMEH.txt"
strArtLIE = "ArtLIE.txt"
strArtEK = "ArtEK.txt"
strArtVK = "ArtVK.txt"
strArtEAN = "ArtEAN.txt"
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", "|") _
_
If strTrennzeichen = "" Then Exit Sub
Zeilenanzahl = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set Bereich1 = ActiveSheet.Range("A4:BW" & Zeilenanzahl)
Set Bereich2 = ActiveSheet.Range("BX4:CA" & Zeilenanzahl)
Set Bereich3 = ActiveSheet.Range("CB4:CT" & Zeilenanzahl)
Set Bereich4 = ActiveSheet.Range("CU4:DB" & Zeilenanzahl)
Set Bereich5 = ActiveSheet.Range("DC4:DE" & Zeilenanzahl)
Set Bereich6 = ActiveSheet.Range("DF4:DI" & Zeilenanzahl)
strTempDateiPfad = strMappenpfad & "\" & strArtikel
Open strTempDateiPfad For Output As #1
For Each Zeile In Bereich1.Rows
strTemp = Anleger & strTrennzeichen
For Each Zelle In Zeile.Cells
If InStr(1, Zelle.Text, strErsetzen) > 0 Then
For i = 1 To Len(Zelle.Text)
Zeichen = Mid(Zelle.Text, i, 1)
Select Case Zeichen
Case ","
Zeichen = "."
End Select
strTemp = strTemp & Zeichen
Next i
strTemp = strTemp & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
strTempDateiPfad = strMappenpfad & "\" & strArtMEH
Open strTempDateiPfad For Output As #1
For Each Zeile In Bereich2.Rows
For Each Zelle In Zeile.Cells
strTemp = Anleger & strTrennzeichen & (ActiveSheet.Cells(z, 1)) & strTrennzeichen
If StrComp(Zelle.Text, "") = 0 Then
strTemp = ""
c = c + 1
Else
Select Case c
Case "1"
Meh = CStr(Zelle.Text) & "|1|1|1|1|1|1|1|1|1||||||||||1"
Case "2"
Meh = "11|" & CStr(Zelle.Text) & "|0|1|1|1|1|0|0|0|0||||||||||1"
Case "3"
Meh = "26|" & CStr(Zelle.Text) & "|0|1|1|1|1|0|0|0|0||||||||||1"
Case "4"
Meh = "25|" & CStr(Zelle.Text) & "|0|1|1|1|1|0|0|0|0||||||||||1"
End Select
strTemp = strTemp & Meh
Print #1, strTemp
strTemp = ""
c = c + 1
End If
Next
z = z + 1
c = 1
Next
z = 4
Close #1
Das Problem nun hierbei:
die Inhalte der ausgeblendeten Spalten werden nicht exportiert!
Das Makro erkennt scheinbar die Anzahl der Spalten, da es die richtige Anzahl der Trennzeichen setzt, allerdings sobald sie ausgeblendet sind, befüllt es die txt-Dateien nicht mit dem INhalt, wenn ich sie händisch einblende schon.
Wo liegt hier der Hund begraben ?
Danke schonmal für jedwege Hilfe und Hinweise,
lg Markus