14.09.2015, 18:57
(Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2015, 19:12 von Rabe.
Bearbeitungsgrund: Font-Dormatierung zur besseren Lesbarkeit entfernt
)
Hallo liebe Fangemeinde,
nach langem googeln und ausprobieren muss ich mich geschlagen geben. Habe mir ein Macro gegoogelt, etwas angepasst und es funktioniert auch fast wie gewünscht, aber nur fast.
Ich versuche gerade, einen Schnittstellenconverter zu basteln. Das soll wie folgt laufen: Excel-Datei wird geöffnet, der Benutzer wählt die Spalten die in der zu verarbeitenden Datei enthalten sind (gelöst mit 2 Userformen) und öffnet die zu verarbeitende Datei. Dabei sollen die Daten gemäß der Auswahl in die entsprechende Spalte in einem Tabellenblatt abgelegt werden.
Hier ist der Quellcode:
Das Makro schreibt zwar in die ausgewählten Spalten, allerdings immer den letzten ausgewählten Wert. Wenn man also z.B. die Spalten Date und Voucher-No. auswählt, werden beide Spalten mit Voucher-No. gefüllt. Wie bekommt man das Makro so hin, dass in den jeweiligen Spalten auch die richtigen Werte landen, und nicht nur der letzte?
Die Excel-Datei und eine kleine Datei zum Testen sind angefügt. Vielen Dank schon mal im Voraus für die Lösungsvorschläge.
Viele Grüße
Johann
nach langem googeln und ausprobieren muss ich mich geschlagen geben. Habe mir ein Macro gegoogelt, etwas angepasst und es funktioniert auch fast wie gewünscht, aber nur fast.
Ich versuche gerade, einen Schnittstellenconverter zu basteln. Das soll wie folgt laufen: Excel-Datei wird geöffnet, der Benutzer wählt die Spalten die in der zu verarbeitenden Datei enthalten sind (gelöst mit 2 Userformen) und öffnet die zu verarbeitende Datei. Dabei sollen die Daten gemäß der Auswahl in die entsprechende Spalte in einem Tabellenblatt abgelegt werden.
Hier ist der Quellcode:
Code:
Private Sub BTN_OpenFile_Click()
Dim ff As Long
Dim sFile As String
Dim sLine As String
Dim arr() As String
Dim row As Long
Dim col As Long
Dim activCell As Range
ff = FreeFile
sFile = Application.GetOpenFilename("beliebige Datei,*.*")
'datei oeffnen
Open sFile For Input As #ff
'erste zelle markieren
Sheets("Voucher").Select
Set activCell = Worksheets("Voucher").Range("A1")
'Call activCell.Activate
While (Not EOF(ff))
Line Input #ff, sLine 'zeile einlesen
If row >= 1 Then
arr = Split(sLine, ";") 'an semikolons aufspalten
'relativ zur aktiven zelle den wert setzen
For col = LBound(arr) To UBound(arr)
'bestimmt, in welcher Spalte der Wert geschrieben wird
For feld = 0 To UserForm1.ListBox2.ListCount - 1
Select Case UserForm1.ListBox2.List(feld)
Case "Date"
spalte = 1
Case "Voucher-No."
spalte = 2
Case "Invoice-No."
spalte = 3
Case "General Account-No."
spalte = 4
Case "General Account-No. Countermark"
spalte = 5
Case "S/P-Account No."
spalte = 6
Case "S/P-Account No. Countermark"
spalte = 7
Case "Entry Description"
spalte = 8
Case "Maturity Date"
spalte = 9
Case "Quantity"
spalte = 10
Case "Amount"
spalte = 11
Case Else
spalte = 28
End Select
activCell.Offset(row + 6, spalte - 1).Value = arr(col)
Next feld
Next 'i
End If
row = row + 1
Wend
'schliessen
Close ff
End Sub
Das Makro schreibt zwar in die ausgewählten Spalten, allerdings immer den letzten ausgewählten Wert. Wenn man also z.B. die Spalten Date und Voucher-No. auswählt, werden beide Spalten mit Voucher-No. gefüllt. Wie bekommt man das Makro so hin, dass in den jeweiligen Spalten auch die richtigen Werte landen, und nicht nur der letzte?
Die Excel-Datei und eine kleine Datei zum Testen sind angefügt. Vielen Dank schon mal im Voraus für die Lösungsvorschläge.
Viele Grüße
Johann