Code: Alles auswählen.
'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("FIELDS")
SMDTabObj.freetable
'SMDTabObj.appendrow
'SMDTabObj.appendrow
'SMDTabObj.cell(1, 1) = "CHECKTABLE"
'SMDTabObj.cell(2, 1) = "KEYFLAG"
Code: Alles auswählen.
'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("FIELDS")
SMDTabObj.FreeTable
If Table = "LFA1" Then
SMDTabObj.appendrow
SMDTabObj.cell(1, 1) = "LIFNR"
SMDTabObj.appendrow
SMDTabObj.cell(2, 1) = "LIFNR"
SMDTabObj.appendrow
SMDTabObj.cell(3, 1) = "NAME1"
SMDTabObj.appendrow
SMDTabObj.cell(4, 1) = "NAME2"
SMDTabObj.appendrow
SMDTabObj.cell(5, 1) = "SORTL"
SMDTabObj.appendrow
SMDTabObj.cell(6, 1) = "LAND1"
SMDTabObj.appendrow
SMDTabObj.cell(7, 1) = "PSTLZ"
SMDTabObj.appendrow
SMDTabObj.cell(8, 1) = "ORT01"
SMDTabObj.appendrow
SMDTabObj.cell(9, 1) = "STRAS"
End If
lg Jens'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("FIELDS")
SMDTabObj.FreeTable
If Table = "LFA1" Then
SMDTabObj.appendrow
SMDTabObj.cell(1, 1) = "LIFNR"
SMDTabObj.appendrow
SMDTabObj.cell(2, 1) = "NAME1"
SMDTabObj.appendrow
SMDTabObj.cell(3, 1) = "NAME2"
SMDTabObj.appendrow
SMDTabObj.cell(4, 1) = "SORTL"
SMDTabObj.appendrow
SMDTabObj.cell(5, 1) = "LAND1"
SMDTabObj.appendrow
SMDTabObj.cell(6, 1) = "PSTLZ"
SMDTabObj.appendrow
SMDTabObj.cell(7, 1) = "ORT01"
SMDTabObj.appendrow
SMDTabObj.cell(8, 1) = "STRAS"
End If
Code: Alles auswählen.
For i = 0 To UBound(SMDdata, 1)
For k = 0 To UBound(SMDdata, 2)
Cells(i + 1, UBound(SMDdata, 2) - k + 1).Value = SMDdata(i, k)
Next k, i
Code: Alles auswählen.
For i = 0 To UBound(SMDdata, 1)
For k = 0 To UBound(SMDdata, 2)
Cells(i + 1, UBound(SMDdata, 2) - k + 2).Value = SMDdata(i, k)
Next k, i
Ja, aber da muss ich noch etwas Hirn reinstecken oder experimentieren. Bei Deinem zuletzt geposteten Code bleibt die erste Excel-Spalte jedenfalls leer. LIFNR wird nicht eingetragen (wenn man sie nur 1x ausliest). Funktioniert das denn bei Dir? Hast Du es getestet?Tron hat geschrieben: Statt einen Wert 2 mal zu lesen, würde ich lieber das Befüllen der Excel - Zellen anpassen.
Ja das hatte ich so vorgesehen.georg993 hat geschrieben: Bei Deinem zuletzt geposteten Code bleibt die erste Excel-Spalte jedenfalls leer
Code: Alles auswählen.
Sub SMDRead_Table(Table As String)
Dim T() As String
Dim i As Long
Dim k As Long
SMDFunc.Exports("DELIMITER") = vbTab
'SMDFunc.Exports("NO_DATA") = "X"
SMDFunc.Exports("QUERY_TABLE") = Table
'SMDFunc.Exports("ROWCOUNT") = "500"
'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("FIELDS")
SMDTabObj.freetable
If Table = "LFA1" Then
SMDTabObj.appendrow
SMDTabObj.cell(1, 1) = "LIFNR"
SMDTabObj.appendrow
SMDTabObj.cell(2, 1) = "NAME1"
SMDTabObj.appendrow
SMDTabObj.cell(3, 1) = "NAME2"
SMDTabObj.appendrow
SMDTabObj.cell(4, 1) = "SORTL"
SMDTabObj.appendrow
SMDTabObj.cell(5, 1) = "LAND1"
SMDTabObj.appendrow
SMDTabObj.cell(6, 1) = "PSTLZ"
SMDTabObj.appendrow
SMDTabObj.cell(7, 1) = "ORT01"
SMDTabObj.appendrow
SMDTabObj.cell(8, 1) = "STRAS"
SMDTabObj.appendrow
SMDTabObj.cell(9, 1) = "MANDT"
End If
'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("OPTIONS")
SMDTabObj.freetable
'SMDTabObj.appendrow
'SMDTabObj.cell(1, 1) = "TABNAME EQ '" & Tab_Nam & "' AND LENG NE 0"
'******** Create Table Object ************
Set SMDTabObj = SMDFunc.Tables("DATA")
'******** CLear Table ************
SMDTabObj.freetable
If SMDFunc.Call = True Then
'******** Read Result ************
T = Split(SMDTabObj.cell(1, 1), vbTab)
ReDim SMDdata(SMDTabObj.Rows.Count, UBound(T))
k = 0
For Each element In SMDTabObj.Rows
T = Split(element("WA"), vbTab)
For i = 0 To UBound(T)
SMDdata(k, i) = Trim(T(i))
Next i
k = k + 1
Next element
Else
MsgBox SMDFunc.Exception
End If
'*** ohne Mandant
ReDim Preserve SMDdata(SMDTabObj.Rows.Count, UBound(T) - 1)
End Sub
Sub Start()
Dim i As Long
Dim k As Long
Sheets(1).Select
Logon
SMDRead_Table ("LFA1")
For i = 0 To UBound(SMDdata, 1)
For k = 0 To UBound(SMDdata, 2)
Cells(i + 1, k + 1).Value = SMDdata(i, k)
Next k, i
LogoffSMD
End Sub