ich bin auf der Suche nach einer Hilfestellung.
Auf dem Laufwerk befindet sich eine ExcelTabelle - diese ist nicht geöffnet.
Diese Tabelle würde ich gerne im Hintergrund auslesen, z. B. Tabelle1, Bereich A1:Z20.
Diesen gesamten Bereich würde ich gerne in ein Array schreiben.
ARR_Import = Sheets("Tabelle7").Range("A1:DZ1000").Value
Was ich bisher habe ich dieser Code
Dim ARR_Import(1000, 1000) As String
Private Sub CommandButton3_Click()
Bereich_auslesen
Test3
End Sub
Private Sub Test3()
'Declaration
Dim Arr_Data(1000, 130)
Dim ix As Integer 'Columns
Dim iy As Integer 'Rows
'ARR_Import = Sheets("Tabelle7").Range("A1:DZ1000").Value
For ix = 1 To 130 'Spalte A bis DZ = 130 Spalten
For iy = 1 To UBound(ARR_Import)
If ARR_Import(iy, ix) = "Distribution Channel" Then
Arr_Data(iy, 1) = "Distribution Channel"
Arr_Data(iy, 2) = ARR_Import(iy + 1, ix)
End If
Next iy
For iy = 1 To UBound(ARR_Import)
If ARR_Import(iy, ix) = "Unit of Order Quantity" Then
Arr_Data(iy + 1, 1) = "Unit of Order Quantity"
Arr_Data(iy + 1, 2) = ARR_Import(iy + 1, ix)
End If
Next iy
For iy = 1 To UBound(ARR_Import)
If ARR_Import(iy, ix) = "Order" Then
Arr_Data(iy + 2, 1) = "OrderNumber"
Arr_Data(iy + 2, 2) = ARR_Import(iy + 1, ix)
End If
Next iy
For iy = 1 To UBound(ARR_Import)
If ARR_Import(iy, ix) = "ProjectManager" Then
Arr_Data(iy + 3, 1) = "PM"
Arr_Data(iy + 3, 2) = ARR_Import(iy + 1, ix)
End If
Next iy
Next ix
MsgBox _
Arr_Data(1, 1) & ": " & Arr_Data(1, 2) & vbNewLine & _
Arr_Data(2, 1) & ": " & Arr_Data(2, 2) & vbNewLine & _
Arr_Data(3, 1) & ": " & Arr_Data(3, 2) & vbNewLine & _
Arr_Data(4, 1) & ": " & Arr_Data(4, 2)
End Sub
Sub Bereich_auslesen()
'** Dimensionierung der Variablen
Dim pfad As String, datei As String, blatt As String, bereich As Range, zelle As Object
'** Angaben zur auszulesenden Zelle
pfad = "C:\Users\15_SAPExport"
datei = "Export_Sample.xlsx"
blatt = "Format"
Set bereich = Range("A1:DM30")
'** Bereich auslesen
For Each zelle In bereich
'** Zellen umwandeln
zelle = zelle.Address(False, False)
'** Eintragen in Bereich
ARR_Import(zelle.Row, zelle.Column) = GetValue(pfad, datei, blatt, zelle)
Next zelle
MsgBox ARR_Import(3, 1)
End Sub
Private Function GetValue(pfad, datei, blatt, zelle)
Dim arg As String
If Right(pfad, 1) > "\" Then pfad = pfad & "\"
If Dir(pfad & datei) = "" Then
GetValue = "datei Not Found"
Exit Function
End If
arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function
Jedoch ist das alles Zelle für Zelle und somit recht langsam.
Hat jemand eine andere Idee?!
Grüße
Stefan