Microsoft Excel

Herbers Excel/VBA-Archiv

Platzhalter - Nachtrag

Betrifft: Platzhalter - Nachtrag von: Dirk N.
Geschrieben am: 21.08.2008 00:36:57

Hallo mal wieder,

kürzlich wurde mir schon sehr geholfen : https://www.herber.de/forum/archiv/1000to1004/t1002987.htm

Meine Frage bezieht sich speziell auf den 3. Code u. den Tipp von Daniel.

Ich musste etwas "umbauen":
Der Dateiname der csv-Datei steht nicht mehr in A1 des zu bearbeitenden Sheets, sondern in dem Sheet "csv-Info" in C3 (in C6 steht der Pfad), also

Worksheets("csv-Info").[c3].Value ' hier steht der csv-Dateiname (mit .csv)
Worksheets("csv-Info").[c6].Value ' hier steht der Pfad der csv-Datei

Ich bekomme es absolut nicht hin, diese Änderungen in den 3. Code einzuarbeiten.
Kann mir jemand helfen ?

MfG Dirk

  

Betrifft: AW: Platzhalter - Nachtrag von: Erich G.
Geschrieben am: 21.08.2008 08:49:16

Hallo Dirk,
probier mal

' wenn in C6 am Ende ein "\" steht
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
   & Sheets("csv-Info").Range("C6") & Sheets("csv-Info").Range("C3"), _
   Destination:=Range("A2"))
' sonst
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
   & Sheets("csv-Info").Range("C6") & "\" & Sheets("csv-Info").Range("C3"), _
   Destination:=Range("A2"))
End With

' oder z. B.
Dim wksCI As Worksheet
Set wksCI = Worksheets("csv-Info")
   
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & wksCI.Range("C6") _
   & "\" & wksCI.Range("C3"), Destination:=Range("A2"))

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Platzhalter - Nachtrag von: Dirk N.
Geschrieben am: 21.08.2008 14:36:57

Hallo Erich,

gleich dein 1. Tipp war goldrichtig - BESTEN DANK !

Ich poste nun mal das komplette Makro (aufgezeichnet mit Makrorekorder) .
Obwohl ich nur einen Bruchteil davon verstehe, so habe ich doch noch eine Frage dazu:
Die Quellen-CSV war ursprünglich nur bis Spalte L befüllt - sofern man bei csv (eigentlich txt) überhaupt von Spalten reden kann...
Nun schwankt diese Spaltenzahl aber ständig u. so kommentierte ich die untere Zeile mit dem ...Array... einfach aus - u. siehe da: MIT oder OHNE diese Zeile funzt es einwandfrei - selbst wenn ich die Anzahl der Einsen wahllos ändere.

Meine Frage also: Was besagt diese Zeile u. kann es OHNE zu Problemen kommen ?
Steht jede Eins für eine Spalte ?


VB-Code:
Sub format_Tableau()    'benötigt für CB1 in "csv-Import"
    'groesstenteils aufgezeichnet mit Makrorekorder

    Range("A2").Select
    '****************ORIGINAL
    '    With ActiveSheet.QueryTables.Add(Connection:= _
    '        "TEXT;D:\1\1 Baustellen\csv-Import\Abc_123456789_080718_080817.csv", _
    '        Destination:=Range("A2"))
    '    .Name = "Abc_123456789_080718_080817.csv"
    '****************
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" _
        & Sheets("csv-Info").Range("C6") & Sheets("csv-Info").Range("C3"), _
        Destination:=Range("A2"))
    .Name = Sheets("csv-Info").[c3]

    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 1252
    .TextFileStartRow = 2
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    '        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    End With
    Range("A1").Select
End Sub

Code eingefügt mit Syntaxhighlighter 4.15


Ist zwar nicht "lebenswichtig", aber ich würde gern spätere Probleme ausschließen.
Es würde mich also freuen, wenn du da mal draufschauen u. mir das erklären könntest...
Im Voraus tausend Dank für deine Bemühungen !

MfG Dirk


  

Betrifft: AW: Platzhalter - Nachtrag von: Erich G.
Geschrieben am: 21.08.2008 16:31:37

Hi Dirk,
schau dir mal in der VBA-Hilfe beim QueryTable-Objekt die Eigenschaft TextFileColumnDataTypes an.

Mit diesen Konstanten kannst du für jede CSV-"Spalte" festlegen, wie der Inhalt gelesen werden soll.
Die 1 steht für Standard/General, bei 2 würde der Wert als Text gelesen.
Daneben gibt es xlSkipColumn (9), damit wird die Spalte überlesen,
und dann noch etliche Werte für verschiedene Datumsformate.

1 = Standard kann Probleme verursachen. Wenn aus einem Text in CSV ein Datum abgeleitet werden kann,
steht in deiner Tabelle plötzlich ein Datum, wo du es nicht erwartest.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Platzhalter - Nachtrag von: Dirk N.
Geschrieben am: 21.08.2008 16:56:36

Hallo Erich,

vielen Dank für deine Erläuterungen.

Die VBA-Hilfe werde ich mir gleich mal zu Gemüte führen - mal sehen, ob ich damit etwas anfangen kann - bin absoluter VBA-Laie...

Mich wunderte ja besonders, daß es auch ganz ohne diese Zeile nach zahlreichen Tests mit unterschiedlichsten csv-Quelldateien problemlos funktionierte - war vllt. aber auch Zufall...

MfG Dirk

P.S.: Gerade möche ich einen anderen Thread aufmachen (Bereich selektieren) - vllt. "treffen" wir uns ja auch dort wieder...


 

Beiträge aus den Excel-Beispielen zum Thema "Platzhalter - Nachtrag"