aktuell arbeite ich an einem Makro, welches eine Quelldatei importiert und weiterverarbeitet. Dies ist der aktuelle Code mit dem ich arbeite :
Sub Import_mit_Dialog()
Dim Quelle As Object, Ziel As Object
Dim Datei As String
Dim lr As Long, i As Long
Dim letzteZeile As Long
On Error GoTo Fehler
'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("alle Excel-Dateien(*.xls),*xls")
'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
MsgBox "keine Datei ausgewählt", , "Abbruch"
Exit Sub
End If
'MsgBox "Ausgewählte Datei: " & Datei, , ""
Application.DisplayAlerts = False
'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei
Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets("Basis")
'zu kopierende Daten auswählen und einfügen
Quelle.Range("D:D").Copy
Ziel.Cells(1, 1).PasteSpecial xlPasteValuesAndNumberFormats
Quelle.Range("O:O").Copy
Ziel.Cells(1, 5).PasteSpecial xlPasteValuesAndNumberFormats
Quelle.Range("S:S").Copy
Ziel.Cells(1, 6).PasteSpecial xlPasteValuesAndNumberFormats
Ziel.Range("A2").Value = "WWW"
Ziel.Range("B2").Value = "XXX"
Ziel.Range("C2").Value = "YYY"
Ziel.Range("D2").Value = "ZZZ"
ActiveWorkbook.CloseApplication.DisplayAlerts = True
Ziel.Select
'Zeile 1 löschen und Spaltenbreite festlegen
Rows("1").Delete
Columns("A").ColumnWidth = "40"
Columns("B:F").ColumnWidth = "15"
Calculate
'Leerzeilen löschen
'Application.ScreenUpdating = False
' lr = Cells(Rows.Count, 1).End(xlUp).Row
' For i = lr To 1 Step -1
' If WorksheetFunction.CountA(Cells(i, 1), Cells(i, 5)) = 0 Then Rows(i).Delete
'Next i
'Application.ScreenUpdating = True
'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing
ThisWorkbook.Worksheets("BLABLABLA").Select
letzteZeile = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row
MsgBox letzteZeile
'Call Hochkommaentfernen
'Call TestSummieren
Exit Sub
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
& "Beschreibung: " & Err.Description _
, vbCritical, "Fehler"
End Sub
Nun gibt es ein Problem mit dem fettgedruckten Codeteil beim Einfügen:Füge ich die Werte per Makro in Ziel ein, so werden manche Zahlen automatisch als Text formatiert, also mit dem "unsichtbaren" Hochkomma. Die Daten der Quelldatei sowie die Zellen der Zieldatei sind als Zahlen formatiert und beim Einfügen von Hand wird dies auch so übernommen.
Wie kann es zu so etwas kommen, hat jemand einen Ansatz für mich?
Das 2. Problem ist, dass offensichtlich Werte beim kopiervorgang verloren gehen.
Nach dem Löschen des Hochkommas per "Text in Spalten" oder Makro stimmt der Gesamtwert nicht mit dem der Originaldatei überein.
Bisher ist mir nur aufgefallen, dass es bei den formatsgeänderten Zahlen meist um Dezimalzahlen handelt. Vielleicht ist dazu wichtig zu wissen, dass ich Probleme hatte mit den Tausendertrennzeichen und Dezimaltrennzeichen "," und ".". Aktuell beziehe ich diese Einstellung vom Betriebssystem, welches auf Englisch eingestellt ist. Ändere ich diese Einstellung in Excel, verschwindet zwar das Hochkomma, aber die eingefügten Daten werden trotzdem als Text behandelt.
Ich hoffe das sind ausreichend Informationen für euch und ihr könnt mir auf die Sprünge helfen, wo der Fehler liegt oder wo ich ansetzen kann.
Vielen Dank im Voraus !
Mit freundlichem Gruß
Robert