ich habe ein Problem mit dem Datenimport.
Es geht um folgendes:
zum allgm. Ablauf:
1.Ich sichere mir eine Liste aus dem SAP als Tabellenkalkulation.
(das sichern als Tabellenkalkulation bewirkt nur das "Einteilen" von Spalten und Zellen im voraus)
2.Ich lasse mir über ein aufgezeichnetes Makro die Datei öffnen bzw. importieren über den Text-Assistent, da die Datei keine Dateiendung besitzt.
3.Ich formatiere die Spalten entsprechend, sodass nur noch 2 Spalten mit Werten übrigbleiben.
4.Aus diesem 2 Spalten erstelle ich eine Pivottabelle(-n)
5.Nun wird die Pivottabelle durchsucht bzw. der Inhalt einer Zelle in einer Var_1 gespeichert + Inhalt einer weiteren Zellen in einer weiteren Var_2 und mit dem Inhalt bestimmter Zellen auf einem anderen Tabellenblatt verglichen. Wenn "true" dann wird die Var_2 in die entsprechende Zelle übernommen.
nun kommt der Haken:
die 2.Spalte die als Datengrundlage für die Pivotabelle dient enthält Werte über 1000. Der Zelleninhalt wird hierbei mit Trennzeichen dargestellt.( 1.000 )
Wenn nun das Makro abläuft bekomm ich alle Werte ab 1.000
als 1 dargestellt, wie z.B.
1.240 als 1 (in der Statusleiste 1,24)
600 als 600 (in der Statusleiste 600) i.O.
3.490 als 3 (in der Statusleiste 3,49)
In meiner Pivottabelle habe ich logischerweise meine falschen Werte, bis 4 Stellen nach dem Komma.
Wenn ich die Punkte 1-3 einzeln ausführe habe ich seltsamerweise die richtigen Werte?!
anbei noch der Code:
'Die Datei "CC.xls" ist bereits durch eine Userform geöffnet
'...
'Datei DateiXY öffnen, formatieren, Pivottabellen erstellen
ChDir "C:\..."
Workbooks.OpenText FileName:= _
"C:\...\DateiXY", Origin:=xlWindows, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1))
'formatieren
Range("B:N,P:P,Q:Q").Select
Range("Q1").Activate
Selection.Delete Shift:=xlToLeft
ActiveWindow.LargeScroll ToRight:=-1
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
ActiveCell.FormulaR1C1 = "Ma"
Range("B1").Select
ActiveCell.FormulaR1C1 = "St"
Range("D1").Select
Columns("B:B").Select
Selection.NumberFormat = "0"
Range("A1").Select
'Pivot
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"DateiXY!R1C1:R10000C2", TableDestination:="R1C4", TableName _
:="Pivot-Tabelle1"
ActiveSheet.PivotTables("Pivot-Tabelle1").AddFields RowFields:="Materialnr"
ActiveSheet.PivotTables("Pivot-Tabelle1").PivotFields("St").Orientation _
= xlDataField
Range("G1").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
"DateiXY!R1C1:R10000C2", TableDestination:="R1C7", TableName _
:="Pivot-Tabelle2"
ActiveSheet.PivotTables("Pivot-Tabelle2").AddFields RowFields:="Ma"
With ActiveSheet.PivotTables("Pivot-Tabelle2").PivotFields("St")
.Orientation = xlDataField
.Name = "Summe - Stückzahl"
.Function = xlSum
End With
Range("F1").Select
'Daten in Target-Tabelle übernehmen
Dim varMatnr As String
Dim varAnzahlLieferungen As Integer
Dim Zelle1 As Range
'Anzahl Lieferungen
Windows("DateiXY").Activate
Range("D3:D1000").Select
For Each Zelle In Selection
Windows("DateiXY").Activate
Range("D3:D1000").Select
Zelle.Select
If ActiveCell.Value = "" Then Exit For
varMatnr = ActiveCell.Value
varAnzahlLieferungen = ActiveCell.Offset(0, 1).Value
Windows("CC.xls").Activate
Windows("CC.xls").Activate
Range("M29:M120").Select
For Each Zelle1 In Selection
If Zelle1 = varMatnr Then
Zelle1.Select
ActiveCell.Offset(0, 28).Value = varAnzahlLieferungen
End If
Next Zelle1
Next Zelle
'Stückzahl
Windows("DateiXY").Activate
Range("G3:G1000").Select
For Each Zelle In Selection
Windows("DateiXY").Activate
Range("G3:G1000").Select
Zelle.Select
If ActiveCell.Value = "" Then Exit For
varMatnr = ActiveCell.Value
varStückzahl = ActiveCell.Offset(0, 1).Value
Windows("CC.xls").Activate
Windows("CC.xls").Activate
Range("M29:M120").Select
For Each Zelle1 In Selection
If Zelle1 = varMatnr Then
Zelle1.Select
ActiveCell.Offset(0, 30).Value = varStückzahl
End If
Next Zelle1
Next Zelle
Windows("CC.xls").Activate
MsgBox ("Daten übertragen!")
End Sub
Vielen Dank im voraus!
Wenn Ihr einen Fehler im Coding oder etwas entdeckt was mann leichter darstellen kann, bin ich um jeden Tip dankbar.