Heute musste ich eine ziemlich umfangreiche Excel Datei in Werte wandeln. Normalerweise würde ich das einfach mittels Copy-Paste machen und die Daten als Werte einfügen. Bei der Menge an Daten kam Excel aber leider ganz schön ins schnaufen (bzw. ist mehrmals abgestürzt), darum habe ich das mittels VBA gelöst.
Die Zeilen einzeln zu kopieren funktioniert zwar ganz gut, ist aber leider extrem langsam. Vielleicht gibt es noch eine bessere Möglichkeit.
Ich hatte auch einmal einen Export nach *.csv oder *.txt versucht und einen anschließenden Import nach Excel, leider gingen hier bei Telefonummern die mit +43 begonnen haben die Formate verloren…
Generell scheint das ein häufigeres Problem zu sein, ich habe dazu auch diesen Beitrag gefunden:
https://www.xylos.com/en/learning/blog/tip-1-save-time-processing-data-excel-vba-copy-cells
Im Code werden die & leider als & dargestellt, darum habe ich sie durch A-N-D angeführt. Beim kopieren des Codes einfach die A-N-D durch & ersetzen.
Sub Grosse_Datei_als_Werte()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Inhalte in Tabellenblatt "Werte" löschen
Sheets("Werte").Select
Cells.Select
Selection.ClearContents
'Anzahl Zeilen in Tabellenblatt "CUSTTABLE" ermitteln
Sheets("CUSTTABLE").Select
loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
'Kopieren und einfügen aller Zeilen von Tabellenblatt "CUSTTABLE" nach Tabellenblatt "Werte"
For loi = 1 To loletzte
Sheets("CUSTTABLE").Select
Rows(loi A-N-D ":" A-N-D loi).Select
Selection.Copy
Sheets("Werte").Select
Rows(loi A-N-D ":" A-N-D loi).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
If (loi Mod 500) = 0 Then
Application.CutCopyMode = False
ActiveWorkbook.Save
End If
Next loi
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub