1.7k Aufrufe
Gefragt in Tabellenkalkulation von
Ich habe 2 Arbeitsmappen.
ich möchte die Tabelle aus der einen Arbeitsmappe, in die anderen kopiert haben.
Wenn ich die Arbeitsmappe manuell öffne und sie dann über ein Makro kopieren und einfüge ist alles okay und die Zahlen sind in Ordnung.
Wenn ich jedoch die Arbeitsmappe per Makro automatisch öffne ( Workbooks open ) dann verstellen sich die ganze Zahlen.
Es ist mir unerklärlich.
Dazu muss ich sagen, dass ich die Tabelle Aus SAP ziehe und mir diese meldeung angezeigt wird, beim manuellen öffnen :

" Sie versuchen eine Datei zu öffnen, deren Format von dem in der Dateierweiterung angegeben abweicht.Stellen Sie sicher, dass die Datei nicht beschädigt ist und aus einer vertrauenswürdigen Quelle stammt, bevor Sie die Datei öffnen. Möchten sie die Datei jetzt öffnen ?

Das Makro was ich benutzen zum copy und past lautet :


Sub Schaltfläche2_Klicken()
Dim MA1, MA2
Application.ScreenUpdating = False

MA1 = """N:\06_PRODUCTION\0601_MMS1\Improvement Management\Arbeitspläne\Arbeitsplanverwaltung_CE_E_Testdatei.xlsm"
MA2 = """N:\06_PRODUCTION\0601_MMS1\Improvement Management\Arbeitspläne\Arbeitspläne_aktuell.xls"
'Workbooks.Open MA2
MA2 = Mid(MA2, InStrRev(MA2, "\") + 1)
'-------------------------------------------
MA1 = Mid(MA1, InStrRev(MA1, "\") + 1)
Windows(MA2).Activate

Sheets("Arbeitspläne_aktuell").UsedRange.Copy
Windows(MA1).ActiveSheet.Cells(1, 1).PasteSpecial SkipBlanks:=False, Transpose:=False



Ich bin auch das Makro schritt für schritt durchgegangen und, Fakt ist, beim öffnen übers Makro stellen sich die Zahlen in der Arbeitsmappe schon um bevor die Tabelle kopiert wird und beim manuellen öffnen bleiben die zahlen die selbe

8 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi ^^

probier mal mit diesen Parametern

PasteSpecial Paste:=xlValues, Operation:=xlNone

gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
0 Punkte
Beantwortet von
Hi, diese Lösungen hatte ich auch schon probiert, jedoch funktioniert es nicht.
Ich gebe euch mal ein Beispiel :
aus einer 15 wird ne 15.000 oder aus einer 1 eine 10.000.
wenn ich Pastespecial anwende mit der entsprechende Formatierung, wird lediglich aus der 15.000 ( mit punkt ) eine 15000 ohne Punkt.
Keiner kann mir sagen, woran es liegt ....
Habt ihr die Meldung gesehen die kommt, wenn ich die Arbeitsmappe manuell öffne ?
Die beim automatischem öffnen ( öffnen übers Makro) nicht auftaucht
0 Punkte
Beantwortet von
Hallo quatsch.

Lies dir diese mal Meldung genau durch. Da steht's eigentlich schon drin. Du versuchst offenbar eine Datei, deren Inhalt eigentlich ein xlsx-oder csv-Format sein müsste, zu öffnen obwohl die Dateiendung nur auf xls lautet.

Du kannst versuchen die Dateiendung umzubenennen. Der eigentliche Grund für die Meldung liegt aber vermutlich an einem unsauberen Export aus SAP. Versuche, ob du dort auch andere Dateiarten exportieren kannst. Am besten nimmst du hier ein csv oder txt Format.

Was die Werte angeht, so sind die Zahlen vermutlich im englischen Format gespeichert. (also mit . als Dezimalzeichen). Da das deutsche Excel aber den Punkt als Tausendertrennzeichen verwendet, füllt es die Nachkommastellen mit Hunderten auf. Warum das allerdings nur beim Öffnen per Makro passiert und nicht beim Öffnen von Hand, kann ich dir auch nicht sagen. Vielleicht erkennt Excel trotz dieser Fehler ein paar, (aber eben nicht alle) Daten.

Zeichne ein Makro auf mit dem du folgendes machst
Öffne eine leere Excel-Datei
Gehe auf Menü Daten und wähle das Symbol "Aus Text"
wähle nun deine txt oder csv Datei.
Wähle im Assistenten weitere Einstellungen wie Spaltentrennung über Tabulatorzeichen. Dezimalzeichen = . usw.
Beende das Makro nach erfolgreichem Import.

Falls das Problem dadurch verschwindet, wäre es Super, wenn du hier eine Rückmeldung gibst. :-)

Gruß Mr. K.
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi ^^

teste das mal

gruss nighty

zum anfang des makros

Dim NeueD() As Variant
Dim Lzeile As Long, Lspalte As Long


anstatt copy und paste

Workbooks(MA2).Worksheets("Arbeitspläne_aktuell").Activate
Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Lspalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
NeueD = Range(Cells(1, 1), Cells(Lzeile, Lspalte))
Workbooks(MA1).Worksheets(1).Activate
Range(Cells(1, 1), Cells(Lzeile, Lspalte)) = NeueD
0 Punkte
Beantwortet von
Nachtrag,

Alternativ kannst du auch deine Workbook Open anpassen

Workbooks.Open "Dateiname\Dateipfad", Format:=2, Delimiter:=".", Editable:=True

Für Format als Spaltentrennzeichen kannst du eine der folgenden Zahlen verwenden.
'1 Tabstopps
'2 Leerzeichen
'3 Kommas
'4 Semikolons
'5 Keine Trennzeichen
'6 Benutzerdefiniert

Gruß Mr. K.
0 Punkte
Beantwortet von
Uups,

nightys Antwort gar nicht gesehen. Kannst du natürlich auch versuchen.
0 Punkte
Beantwortet von
noch ein Fehler im Text. So ist die Liste richtig:

'1 Tabstopps
'2 Kommas
'3 Leerzeichen
'4 Semikolons
'5 Keine Trennzeichen
'6 Benutzerdefiniert

Mr. K.
...