anrion
Goto Top

Datei mit variablem Namen einlesen und als Excel speichern

Hallo Forum,

Ich habe ein Problem.

-Es muss eine Datei (CLV) eingelesen werden. Öffne ich diese in Excel, so kommt der Textkonvertierungs-Assistent (Getrennt, Tabstopp + Semikolon müssen ausgewählt werden)
-Diese CLV hat immer diese Syntax: CLV_KW_Jahr. Es gibt also jede Woche eine Datei. Problem könnte nur sein, dass wenn jemand vergisst, 3 Wochen einzulesen-> dann ist ein Rückstand da.
-Man bräuchte also eine Eingabe, welche mitzählt und diesen Zähler speichert, sodass diese CLV mit der folgenden KW und Jahr eingelesen wird (Sprich jedes mal wenn man das Makro öffnet, öffnet er die CLV, macht die Textkonvertierung, speichert und setzt den Zähler für die KW um 1 hoch. Am besten wäre es, wenn der Jahresumsprung von 2016 auf 2017 und somit 52/53 auf 1 auch mit verbunden wird)

Makro-Aufzeichnung spuckte das hier aus:

Sub Makro1()
ChDir _
        "O:\..."  
    Workbooks.OpenText Filename:= _
        "O:\...\CLV_32_2016" _  
        , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True _
        , Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
        , Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers _
        :=True
    ActiveWorkbook.SaveAs Filename:= _
        "O:\...\CLV_32_2016.xlsx" _  
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.Quit
End Sub

mfG Stefan

Content-Key: 312245

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

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

Mitglied: 129813
Solution 129813 Aug 10, 2016 updated at 10:28:36 (UTC)
Goto Top
Sub CreateFiles()
    Const strPathSource = "O:\csv"  
    Const strPathTarget = "O:\xlsx"  
    Application.DisplayAlerts = False
    Set fso = CreateObject("Scripting.FileSystemObject")  
    for each file in fso.GetFolder(strPathSource).Files
       strPathTargetFile = strPathTarget & "\" & fso.GetBasename(file.Name) & "\.xlsx"  
       if LCase(fso.GetExtensionName(file.Name)) = "csv" and not fso.FileExists(strPathTargetFile) then  
          Workbooks.OpenText Filename:=file.Path _
        , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True _
        , Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
        , Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True
        
          ActiveWorkbook.SaveAs Filename:=strPathTargetFile
       end if
    Next
    Application.DisplayAlerts = True
End Sub
Regards