darkunicorn
Goto Top

CSV Semikolon getrennt geht in Tabelle aber nicht korrekt bei Datei Öffnung...

Bei manuellem Aufruf funtioniert die Semicolon-Trennung, bei Datei-Öffnung nicht...

Hallo Zusammen,
ich möchte vorweg erwähnen, daß VBA von mir nur sehr spärlich (1-2 mal im Jahr) benötigt wird, sodas ich nicht über DIE Kenntnisse schlechthin verfüge und deshalb an folgendem Punkt scheitere.

Die ursprüngliche Aufgabenstellung war, einen Macro unter Ecxell 2007 zu schreiben, der es dem User ermöglicht die richtige CSV-Datei zu seinem Dokument zusätzlich zu öffnen und Ihm die Arbeit erleichtern sollte. Leider sind meine User nicht sehr bewandert (z.B. Errormessages mit Ja/Nein-Möglichkeit führen zur Frage "Was muss ich hier machen?") und führten dazu die CSV gleich beim öffnen der XLSM-Datei zu öffnen. Hier liegt nun mein Problem. Was innerhalb der Tabelle manuell noch fehlerfrei möglich war, funktioniert hierbei nicht mehr. Alle Zeilen der CSV werden jeweils ohne Semicolon-Trennung/Zeile dargestellt, wohingegen alle Zellen korrekt bei manuellem Aufruf in der Tabelle angezeigt werden. Der verwendete Sub lautet:


Private Sub Workbook_open()

<Formatvorgaben für die XLSM-Datei>

Workbooks.OpenText Filename:=<Pfad- und Dateiname>
With ActiveSheet
.Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).TextToColumns _
DataType:=xlDelimited, Semicolon:=True
End With

End Sub


Wie gesagt, bei einem manullem Aufruf funzt es wunderbar, beim "Workbook_open" funktioniert die Semicolon-Trennung nicht mehr.

Irgendwie hab ich hier ein Brett vorm Kopf und hoffe Ihr könnt mir helfen...

Grüße und danke im Vorraus

Alex

Content-Key: 150464

Url: https://administrator.de/contentid/150464

Printed on: April 19, 2024 at 21:04 o'clock

Mitglied: 76109
76109 Sep 07, 2010 at 05:44:19 (UTC)
Goto Top
Hallo darkunicorn!

Zitat von @darkunicorn:
Wie gesagt, bei einem manullem Aufruf geht es wunderbar, beim "Workbook_open" funktioniert die Semicolon-Trennung nicht mehr.
Bei dieser seltsamen Syntax kein Wunderface-wink

Versuchs mal so:
Private Sub Workbook_Open()
   '.....  
    Workbooks.OpenText Filename:="DateiPfad", DataType:=xlDelimited, Semicolon:=True  
   '.....  
End Sub

Gruß Dieter

PS.
Sorry, hab's mal getestet und per Makro funktioniert das Workbook.OpenText tatsächlich nicht so wie es soll.
Alternativ sollte aber das funktionieren:
Private Sub Workbook_Open()
   '.....  
    Workbooks.OpenText Filename:="DateiPfad"  
    Columns("A").TextToColumns , DataType:=xlDelimited, Semicolon:=True  
   'ActiveWorkbook.Saved = True  'Abfrage zum Speichern beim Schließen unterdrücken  
   '.....  
End Sub
Member: darkunicorn
darkunicorn Sep 07, 2010 at 21:20:00 (UTC)
Goto Top
Hallo Didi1954,

danke für deine Antwort. Hatte deine ursprüngliche Version als erstes verwendet bevor ich auf die für dich seltsame Syntax kam *g*.

Allerdings nachdem ich dann doch ein paar Stunden Schlaf hatte (wirkt halt dann doch Wunder face-wink ) hab ich eine weitere Lösung gefunden.

Ich habe das ganze von der Arbeitsmappe in die Tabelle selbst geschoben und nen Call gesetzt. Zwar zugegeben nicht elegant aber die User sind vorerst zufrieden...

Aber nochmals Danke für dein Bemühen!

Gruß Alex
Mitglied: 76109
76109 Sep 08, 2010 at 05:52:54 (UTC)
Goto Top
Hallo Alex!

Den Import in die Arbeitsmappe würde ich dann in etwa so machen:
Const ImportSheet = "Tabelle1"  
Const ImportDatei = "E:\Test\Import.csv"  

Private Sub Workbook_Open()
    Call CsvFileImport
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsDialog As Boolean, Cancel As Boolean)
    Sheets(ImportSheet).Cells.ClearContents
End Sub

Private Sub CsvFileImport()
    Dim Wks As Worksheet
    
    Set Wks = Sheets(ImportSheet)
    
    Wks.Cells.ClearContents
    
    With Wks.QueryTables.Add(Connection:="TEXT;" & ImportDatei, Destination:=Wks.Range("A1"))  
        .AdjustColumnWidth = True   'Spaltebreite automatisch anpassen  
        .TextFileParseType = xlDelimited
        .TextFileSemicolonDelimiter = True
        .Refresh BackgroundQuery:=False
        .Delete
    End With
End Sub
Wobei die Sub CsvFileImport auch in einem Modul mit einer Tastenkombination versehen, stehen könnte.

Gruß Dieter