Autor
|
Thema: Exel fügt zeichen beim abspeichern als txt mit ein (1570 mal gelesen)
|
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005
|
erstellt am: 27. Jan. 2006 17:55 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen und folgendes Problem. Ich lese ein dos-Textdatei (tab getrennt)nach Excel mit folgendem Befehl in einem Makro ein. Workbooks.OpenText Filename:="C:\Tmp\ERP_TMP\analyse\XXX_ERP.TXT", Origin:= _ xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlNone, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), _ Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), _ Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15, 2), Array( _ 16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2)), TrailingMinusNumbers _ :=True
Das ergebnis sieht in einer Zelle z. B. so aus. OP012; 12,1" Ub: 12V DC; I=5,9A; Q: 128...178 l/h; 2,25bar 1-pol; Typ C; 6A; DC 60V; AC 230/400V; 6kA an den Zelle ist nichts besonderes. Im Makro werden noch einige Dinge getan. Nach dem speichern unter Befehl ActiveWorkbook.SaveAs Filename:="C:\Tmp\ERP_TMP\analyse\XXX_ERP_analyse.ASC" _ , FileFormat:=xlText, CreateBackup:=False sieht das Ergebnis im Editor betrachtet so aus. "OP012; 12,1""" "Ub: 12V DC; I=5,9A; Q: 128...178 l/h; 2,25bar" "1-pol; Typ C; 6A; DC 60V; AC 230/400V; 6kA" Ich habe keine Erklährung dafür, warum EXCEL diesen Eintrag vornimmt, da die anderen Zellen nicht betroffen sind. Ich hänge mal meine basisdatei mit an, wenn jemand Testen will. ------------------ Gruß Lothi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 27. Jan. 2006 18:21 <-- editieren / zitieren --> Unities abgeben: Nur für lothi
Hallo, ich werde aus deiner Aufgabenstellung und wass du willst nicht schlau... Wo ist was was dich stört? :confus: die " ? mit der Exceltabelle wird es leider nicht klarer, da die Namensverweise fehlen und kein Makro drinnen ist... gruss Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grebe Mitglied
Beiträge: 536 Registriert: 16.12.2002
|
erstellt am: 27. Jan. 2006 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für lothi
Falls es um das """ geht - das leigt daran, dass die Texte jeweils durch " und " begrenz sind. Da aber einmal tatsächlich ein " im Text vorkommt, wird daraus zur Unterscheidung "" gemacht. Mit dem abschließenden " für das Ende des Textes ergibt es dann halt """ Mathias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005 Eplan P8 2.0 SP1 Eplan P8 Fluid Add ON Eplan 5.70.4.52700 Eplan 5.xx
|
erstellt am: 27. Jan. 2006 19:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas und Mathias, sorry wegen des Verständnises. Es geht tatsächlich um die ". Die angehängte Datei ist meine dos-(tab getrennte)Basisdatei, die aus Execl heraus geöffnet wird. Der Fehler tritt nur in einer Spalte auf. Das mit dem eingrenzen, wenn ein " vorkommt (OP012; 12,1") leuchtet mir noch ein (kann in dem Fall das " auch durch Zoll ersetzen). In den bereichen (Ub: 12V DC; I=5,9A; Q: 128...178 l/h; 2,25bar), wo kein " vorkommt verstehe ich es nicht. In den anderen Spalten wird beim abspeicher auch kein " zur Texterkennung mit abgespeichert. Da die gespeicherte Datei von anderen Programmen wieder eingelesen wird, stören die " natürlich. Gibt es einen vieleicht einen Parameter beim Speichern unter (ich nehme .txt tab-Trennung), wo die " zur Kennung nicht mit gespeichert werden?
------------------ Gruß Lothi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 27. Jan. 2006 19:17 <-- editieren / zitieren --> Unities abgeben: Nur für lothi
Hi Lothi, da werden wohl irgendwie paar (Sonder)Zeichen gesondert interpretiert, bei dem einzelnen " ists klar, da macht er """ draus, aber bei den anderen Zellen weiss ich jetzt auch nicht genau warum, evtl. das ';' ? Du kannst es ja auch mal s.u. probieren, hauptsache Du kommst nicht vom Regen in die Traufe;-) Gruss Nancy --
Code: Sub z() Dim dObj As New DataObject ActiveSheet.UsedRange.Copy dObj.GetFromClipboard Open "D:\temp\test.asc" For Output As #1 Print #1, dObj.GetText Close #1 dObj.Clear: Set d.obj = Nothing Application.CutCopyMode = 0 End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005
|
erstellt am: 27. Jan. 2006 19:38 <-- editieren / zitieren --> Unities abgeben:
Hallo Nancy, bin in VBA nicht so fit und arbeite meistens mit aufzeichnen und anpassen. Hab bei dem Code nicht alles verstanden. Im Prinzip öffne ich die dos-Textdatei (tab getrennt) nur um zu kontrollieren ob Zellen richtig beschrieben sind. ist dies der Fall, wird die Datei wie oben beschrieben gespeichert. Ausser dem Dateinamen und dem Pfad, wo die Datei abgelegt wird sollte sich nichts ändern. Daher auch das Speichern unter. Sind Zelleninhalte nicht ok, wird die Datei sowiso verworfen, da sie aus einem Anwenderprogramm heraus erstellt wird. Ich werde Dein Programm testen. Danke
------------------ Gruß Lothi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 27. Jan. 2006 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für lothi
Ahhhh Lothi, oki, wenn du Excel 'nur' zur Kontrolle nimmst, dann würde ich die Datei, wenn Kontrolle okay ungespeichert schliessen, also mir von Excel da gar nicht erst irgendwelchen SaveAs-Murks aufzwingen lassen. Die Original.TXT nennst Du dann einfach in Orginal.ASC um, da weiss man was man hat[te];;-)))
Code:
Sub kontrolle_okay() Dim s As String s = ActiveWorkbook.FullName 'aktueller Pfad & Name ActiveWorkbook.Close 0 'nicht speichern 'Urdatei *.TXT in *.ASC umbenennen Name s As Left(s, Len(s) - 3) & "ASC" End Sub
Gruss NancyEine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005
|
erstellt am: 28. Jan. 2006 08:58 <-- editieren / zitieren --> Unities abgeben:
Hi Nancy, hab Deine Hilfe umgesetzt und es geht prima. hier wie ich es ursprünglich verwiklicht habe. 'Öffnen der Datei 'CADPLAN_S entspricht der Variablen mit dem Laufwerk und Pfad Datei_Name_1 = CADPLAN_S + "\XXX_ERP.TXT" Workbooks.OpenText Filename:= _ Datei_Name_1, Origin:= _ xlMSDOS, ... 'Speichern der Datei unter einem anderen Laufwerk und Pfad Datei_Name_1 = "C:\Tmp\ERP_TMP\analyse" + "\" + Datei_Name_2 + ".ASC" ActiveWorkbook.SaveAs Filename:= _ Datei_Name_1, FileFormat:=xlText, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False, _ ConflictResolution:=XlSaveConflictResolution.xlOtherSessionChanges ActiveWorkbook.Close SaveChanges:=True 'Test mit Deinem Vorschlag ActiveWorkbook.Close 0 Name Datei_Name_1 As Left(Datei_Name_1, Len(Datei_Name_1) - 3) & "ASC" ' Ergebnis funktioniert tadellos Eine Bitte noch Nancy ich muss es auch auf einem anderen Laufwerk und Pfad ablegen Danke für die Hilfe Lothar ------------------ Gruß Lothi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005 Eplan P8 2.0 SP1 Eplan P8 Fluid Add ON Eplan 5.70.4.52700 Eplan 5.xx
|
erstellt am: 28. Jan. 2006 12:54 <-- editieren / zitieren --> Unities abgeben:
Hi Nancy, zu Antwort vorher... Eine Bitte noch Nancy ich muss es auch auf einem anderen Laufwerk und Pfad ablegen, wenn schon vorhanden (2. Übergabe) überschreiben, mit oder ohne Abfrage, bin mir noch nicht sicher. Danke Lothi
------------------ Gruß Lothi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 28. Jan. 2006 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für lothi
Hallo Lothi, ich verstehe Dich so in etwa:
Code:
Sub kontrolle_okay() Dim txtFile As String Dim ascFile As String Dim newPath As String newPath = "d:\" With ActiveWorkbook txtFile = .FullName ascFile = newPath & Left(.Name, Len(.Name) - 3) & "ASC" 'ungesichert schliessen .Close 0 End With 'copy&rename in einem FileCopy txtFile, ascFile 'ggf. löschen '''Kill txtFile End Sub
FileCopy fragt nicht nach überschreiben ja/nein, es überschreibt einfach, wenn schon vorhanden;-)Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lothi Mitglied
Beiträge: 34 Registriert: 24.08.2005
|
erstellt am: 29. Jan. 2006 17:48 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|