Thema Datum  Von Nutzer Rating
Antwort
Rot Mehrere gleiche Werte in einem Makro einmalig anpassen
30.10.2019 15:18:25 TBone
NotSolved
30.10.2019 16:04:36 Werner
NotSolved
30.10.2019 16:49:08 Gast5509
NotSolved
30.10.2019 20:41:41 Gast30035
NotSolved

Ansicht des Beitrags:
Von:
TBone
Datum:
30.10.2019 15:18:25
Views:
853
Rating: Antwort:
  Ja
Thema:
Mehrere gleiche Werte in einem Makro einmalig anpassen

Moin zusammen, ich habe ein Makro, wechles mir hilft CSV Dateien zu importieren, die in einer Zelle Zeilenumbrüche aufweisen. Ich muss am Tag mehrere CSV-Dateien öffnen und diese sind in unterschiedlichen Ordnern zu finden und auch unterschiedlich benannt. Der Name des Ordners findet sich aber auch immer im Dateinamen wieder.

Ich möchte gerne, ohne diesen Wert im Makro durch Suchen und Ersetzen immer anzupassen, dieses Makro verwenden. Im Idealfall muss ich diesen Wert nur einmal eingeben und das Makro starten (ähnlich wie die Declare Funktion bei mssql).

In diesem Makro z.B. ist der Wer L456789 und ich möchte diesen gerne variabel halten und z.B. auf B6543 ändern und dannauf W9032.
Suchen udn ersetzen hilft, aber auch nur bedingt, da ich diesen Arbeitschschritt gerne vermeiden würde.

Evtl. hat hier  ja jemand eine Idee  bzw. lösung dafür.

Sub CSV_importieren()

Dim ArrDaten

            'CSV-Datei komplett in den Arbeitsspeicher laden und dabei aufteilen in einzelne Zeilen
            Open "X:\Import\B1420\Aktuelle-CSV\L456789-Aktuell.csv" For Input As #1
            ArrDaten = Split(Input(LOF(1), 1), vbCrLf)
            Close #1
           
            'Alle vbLF in alle Zeilen ersetzen durch eine offene, eckige Klammer {
            For Zeile = 0 To UBound(ArrDaten)
              ArrDaten(Zeile) = Replace(ArrDaten(Zeile), Chr(13), Chr(123))
            Next Zeile
            
           
            'Geänderte CSV-Datei in einer TMP-Datei speichern
            Open "X:\Import\L456789\Aktuelle-CSV\L456789-Aktuell.tmp" For Output As #1
            For Zeile = 0 To UBound(ArrDaten)
              Print #1, ArrDaten(Zeile)
            Next Zeile
            Close #1
           
            'Neue Arbeitsmappe erstellen
            Workbooks.Add (xlWBATWorksheet)

            Dim ws As Worksheet
            Set ws = ActiveSheet
            'Eine Sekunde warten, damit das Worksheet erstellt ist, sonst bringt die QueryAbfrage einen Fehler
            Application.Wait (Now + TimeValue("0:00:01"))
       
            Dim connectionName As String
            connectionName = "TEXT;X:\Import\L456789\Aktuelle-CSV\L456789-Aktuell.tmp"
            With ws.QueryTables.Add(Connection:=connectionName, Destination:=ws.Range("A1"))
                .Name = DName
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 65001
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierSingleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = True
                .TextFileSemicolonDelimiter = True
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = False
                .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
        , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
        , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, _
        2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 _
        , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
            End With
           
            'In allen Zellen die offene, eckige Klammer { durch einen Zeilenumbruch vbLF ersetzen
            Cells.Replace What:=Chr(123), Replacement:=vbLf, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False

        'TEMP-Datei löschen
        Set FS = CreateObject("Scripting.FileSystemObject")
        Set f = FS.GetFile("X:\Import\L456789\Aktuelle-CSV\L456789-Aktuell.tmp")
        f.Delete


End Sub

 

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Mehrere gleiche Werte in einem Makro einmalig anpassen
30.10.2019 15:18:25 TBone
NotSolved
30.10.2019 16:04:36 Werner
NotSolved
30.10.2019 16:49:08 Gast5509
NotSolved
30.10.2019 20:41:41 Gast30035
NotSolved