Datenexport aus Excel
Ich muss in einer Tabelle viele Eingaben tätigen lassen, wie Name, Ort, PLZ usw. Das alles ist kein Problem auch der Export in ein anderes Dateiformat ist geklärt.
Nur habe ich unter anderem auch Eingaben zu exportieren, die eine Textlänge von 1500 Zeichen und mehr beinhalten.
In welcher Form bewerkstelligt man dies am besten, immer unter der Berücksichtigung das z.B. mit einem Makro alle Daten aus diesem Textfeld exportiert werden können.
Gruß vom Markus
Antwort schreiben
Antwort 1 von KJG17 vom 23.02.2020, 01:20 Options
Hallo,
diese Frage müsste dir eigentlich die Anwendung beantworten können, mit der diese 'exportierten' Daten dann verarbeitet werden sollen. Der Export erfolgt ja wohl kaum zum reinen Selbstzweck.
Gruß
Kalle
Hallo Kalle,
die Anwendung in der die Daten dann importiert werden ist nicht das Problem. Diese kann in *.txt oder *.csv oder *.doc sein. Der Export ist aber mein Problem, denn ich möchte bei der Texteingabe weder auf die Entertaste verzichten, diese ist innerhalb verbundener Zeilen nicht aktiv, noch auf unbekannte Exportschleifen, wie ich sie bei Textfeldern benötige.
Deshalb ja meine Frage. Welches ist die beste Möglichkeit einen der Art großen Text innerhalb von Excel zu verabreiten und wie sieht dann der Export aus.
Danke dir trotzdem.
Markus
Antwort 3 von KJG17 vom 24.02.2020, 17:09 Options
Hallo,
die Tabelle von der du spichst, ist also einer Excel-Tabelle und zu jeder erfassten Anschrift gib es auch eine Zelle, die 1500 und mehr Zeichen Text enhalten kann?
Dann sehe ich ein Problem hauptsächlich darin, dass innerhalb dieser umfangreichen Texte auf keinen Fall ein Zeichen vorkommen darf, welches gleichzeitig als Trennzeichen für Spalten verwendet wird.
Bei *.cvs ist das z.B. das Semikolon und wenn das im Original-Text der Zelle vorkommt, werden für diese 'Zeilen' dann zusätzliche 'Spalten' eingerichtet, die den Import in eine andere Anwendung dann über den Haufen schmeißen dürften.
Gruß
Kalle
Hallo Kalle,
genau aus diesem Grunde ist nun schon einmal das Verbinden mehrerer Zellen zu einer großen Texteingabezelle nicht mehr möglich.
Um genauer zu sein, es handelt sich um eine Eingabetabelle von über 150 Eingaben Diese teilen sich auf in Eingaben in normlen Zellen, in Datumszellen, in Zahlzellen und und und
Aber es ist auch die Eingabe eines langen Textes erforderlich und genau um den geht es.
In welcher Art und Weise kann ich das in Excel einbeziehen und welche Möglichkeit ist der Export dieser Weise?
Gruß Markus
Antwort 5 von KJG17 vom 26.02.2020, 07:51 Options
Hallo Markus,
in einer Zelle kannst du maximal 32767 Zeichen (incl. Leerzeichen) eingeben, das sollte bei den langen Texten also nicht das Problem sein. Mehr als 1024 Zeichen werden allerdings nur in der Bearbeitungszeile, nicht aber in der Zelle angezeigt, das hat aber auf den 'Export' keine Auswirkungen. Wenn es auch ansonsten eine reine Tabelle ohne zusammengefasste Felder (Zellen) ist, müsstest du vor dem Abspeichern im CVS-Format lediglich per 'Suchen/Ersetzen' dafür sorgen, dass sich in keiner deiner Textzellen ein Semikolon befinden kann. Die Ersetzung durch Kommas könnte zwar in den Fällen, wo statt des Doppelpunktes ein Semikolon eingegeben wurde, etwas irritieren, hätte aber ansonsten keine ernsthaften Auswirkungen.
Beim Ersetzen solltest du aber ausdrücklich nur die Spalten mit den Textzellen markieren, in Zellen mit Funktionen könnten sich ja auch Semikola befinden, die sonst ebenfalls ausgetauscht würden. Beim Speichern als CVS würden diese Semikola aber keine Rolle spielen, da nur die von den Funktionen zurückgegebenen Werte gespeichert werden, die natürlich ihrerseits keine Semikola enthalten dürften.
Gruß
Kalle
Hallo Kalle,
das mit den Zellen hatte ich aber schon am Anfang geschrieben, geht ja nicht. Der Text wird ja nicht nur mit Zeichensetzung eingegeben, es wird ja auch ab und zu mal die Enter-Taste gedrückt, um einen Absatz zu machen. Das geht aber auch in zusammen gefassten Zellen nicht, ODER?
Ich habe inzwischen Textfelder eingefügt, doch wie bekomme ich diese exportiert?
Sheets("TextBox1").Select
Sheets("Textbox1").Copy
ActiveWorkbook.SaveAs Filename:="C:\Text1.txt", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
Das geht nicht.
Gruß Markus
Antwort 7 von coros vom 26.02.2020, 18:14 Options
Hallo Markus,
nachfolgend mal ein Makro, wie ich es bei einem Kunden einsetze, um eine CSV-Datei mit Trennzeichen Simekolon ( ; )zu erzeugen. Dabei wird jede Spalte durch das Trennzeichen getrennt. Du musst das Makro allerdings noch etwas auf Deine Gegebenheiten anpassen.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.[b] Option Explicit
Option Private Module
Public Datemexport_läuft As Boolean
Dim iRow As Integer
Dim iCol As Integer
Dim ExportDatei
Dim wkb_Datenbank As Worksheet
Dim sTxt As String
Dim wsh As New IWshShell_Class
Dim Exportfile As String
Dim LastRow As Integer
Sub Cardatenexport_in_CSVDatenbank()
45 On Error GoTo ERRORHANDLER
47 Datemexport_läuft = True
51 Exportfile = Mid(ThisWorkbook.path, 1, Len(ThisWorkbook.path) - 8) & "Datenbanken\" & "Cardatenbank.csv"
53 ExportDatei = FreeFile
54 Set wkb_Datenbank = ThisWorkbook.Worksheets("Cardatenbank")
56 LastRow = wkb_Datenbank.UsedRange.Rows.Count
'Set wkb_Datenbank = Workbooks("Cardatenbank.csv").Worksheets(1)
66 Open Exportfile For Output As #ExportDatei
69 For iRow = 2 To LastRow
73 For iCol = 1 To wkb_Datenbank.UsedRange.Columns.Count
74 sTxt = sTxt & CStr(wkb_Datenbank.Cells(iRow, iCol).Text) & ";"
75 Next iCol
76 sTxt = Left(sTxt, Len(sTxt) - 1)
77 Print #ExportDatei, sTxt
78 sTxt = ""
79 Next iRow
80 Close #ExportDatei
85 Datemexport_läuft = False
'----------------------------------------------------------------------------------
'Prozedur beenden
89 Exit Sub
'----------------------------------------------------------------------------------
'Dieser Bereich wird abgearbeitet, sollte ein Fehler in Code auftretetn. Dann erscheint eine Bildschirmmeldung
ERRORHANDLER:
Fehlerzeile = Erl
Fehlerort = "Modul_CSV_Export"
Fehlerereignis = "Cardatenexport_in_CSVDatenbank"
Logdatei_erzeugen
MsgBox "Bei dieser Aktion ist ein Fehler aufgetreten. Die Fehlerursache wurde in die Logdatei """ _
& Logdatei & """ eingetragen. Sollte dieser Fehler häufiger auftreten, so senden Sie bitte die Logdatei """ _
& Logdatei & """, die sich im Verzeichnispfad " & Chr(10) & Chr(10) _
& """" & Mid(ThisWorkbook.path, 1, Len(ThisWorkbook.path) - 22) & "log\""" & Chr(10) & Chr(10) _
& " befindet, als Anhang mit kurzer Fehlerbeschreibung an die E-Mailadresse " _
& """fehler_CDES@excelbeispiele.de""." & Chr(10) & Chr(10) _
& "Wichtig! Tragen Sie bitte als E-Mailbetreff den Text ""Fehler im Programm CDES"" ein " _
& "und geben in der E-Mail für telefonische Rückfragen Ihre Festnetz-Telefonnummer, unter der man Sie " _
& "erreichen kann, mit an.", vbCritical, "Cartrade24 - Fehlermeldung..."
End Sub
'####################################################################################################################
[/b]
Bei Fragen dazu melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Hallo Oliver,
vielen Dank für den doch für mich recht umfangreichen Code. Bei mir stiegt das Makro schon im ersten Teil aus:
Dim wsh As New IWshShell_Class
Ich denke mir fehlen mal wieder irgend welche Bibliotheken, kann das sein. Im Objektkatalog ist der Eintrag IWshShell_Class nicht zu finden.
Habe ich Recht oder habe ich Recht?
Übrigens brauchen wir das Exportieren gar nicht so schwer zu machen, mit Semis und so. Es soll nur der reine Text aus einer TextBox1 dann aus der 2 und so weiter bis zur 9 exportiert werden. Das ganze soll dann auf C:\ liegen und Text1.txt....Text9.txt heißen.
Gruß Markus
Antwort 9 von coros vom 29.02.2020, 05:12 Options
Hallo Markus,
die Zeile die angemeckert wird, Kannst Du löschen. Die wird in dem Makro nicht benötigt. Die wurde für ein anderes Maro m gleichen Modul benötigt, das ich hier nicht aufgefhrt habe, da es mit dem Thema nichts zu tun hat. Ich habe mitdem Makro Daten in die Registry geschrieben und dafür wude die Deklaration der Variablen notwendig.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.