|  
                                             
	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 
	 
	  
	  
     |