2017-03-21 4 views
0

Ich habe ein Projekt zum Erstellen von VBA, um alle CSV-Dateien in einem Ordner mit dem Namen des aktuellen Monats zu finden und zu öffnen. Ich habe ein paar Sachen online gefunden, die nah, aber nicht ganz nah zu sein schienen. Sie werden schließlich in XLSX-Dateien konvertiert und analysiert. Dieser Teil habe ich. Das Makro, das konvertiert, analysiert und speichert, wird in einer anderen Datei auf demselben Pfad gespeichert, aber nicht als "tief".VBA, um alle CSV-Dateien in einem variablen Ordnernamen zu finden

Also auf meinem Desktop ist ein Ordnername "CSV find test". Im Inneren befinden sich zwei Ordner "Feburary" und "March". Ich brauche es, um alle CSV-Dateien im letzten Monat zu öffnen. Ich habe den Rest der Syntax. . . . .

Ich könnte mir nicht vorstellen, dass es eine große Menge an Syntax benötigen würde. Danke für jede Richtung.

Sub OpenFile() 

    FileMonth = Month(Date) 
    FileDate = Format(Date, "mmmm") 
    FilePath = "C:\Users\Me\Desktop\CSV find convert tests\" & FileMonth & "\" & FileDate & ".xls" 

    Workbooks.Open Filename:="FilePath" <- - - - error happens here. 

End Sub 
+2

'FilePath' ist eine Variable, keine Zeichenfolge. Entfernen Sie die Anführungszeichen. – Comintern

+2

Auch wenn Sie nach CSV-Dateien suchen, ist Ihre Erweiterung falsch ... Sehen Sie hier, wie Sie alle CSV-Dateien in einem Ordner durchlaufen können: https://stackoverflow.com/questions/25163369/open-csv-file-with -excel-vba? rq = 1 –

+2

1. Verwenden Sie 'FileMonth = Format (Datum," mmmm "), um den vollständigen Monatsnamen zu erhalten. 2. Verwenden Sie 'Debug.Print FilePath ', bevor Sie versuchen, die CSV-Datei zu öffnen und in das VTE-Direktfenster zu schauen, um sicherzustellen, dass es korrekt ist. 3. Wie oben. – Jeeped

Antwort

1

Ich glaube nicht, dass Sie wirklich verstehen, wie eine Variable funktioniert, wie Sie es in eine Zeichenfolge einfügen. Wenn Sie etwas in Anführungszeichen setzen, wird eine Zeichenfolge erstellt. Im Folgenden erfahren Sie, wie Sie den Monat über die Variable zum String hinzufügen können.

Sub OpenCSVs() 
Dim MyFiles As String, ThisMonth As String 
Dim startPath As String 
ThisMonth = Format(Date, "mmmm") 
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\" 
MyFiles = Dir(startPath & "*.csv") 

Do While MyFiles <> "" 

Workbooks.Open startPath & MyFiles 

     'Do stuff to it will go here 
'ActiveWorkbook.Close SaveChanges:=True (Deactivated for now) 

MyFiles = Dir 

Loop 

End Sub 
+0

Oh, ich verstehe ... Vielen Dank. Das obige hat perfekt funktioniert. –

+0

Also habe ich ein Makro aufgezeichnet, um die CSV-Daten zu analysieren. Ich versuche, die Datei zu speichern und in xlsx-Format zu konvertieren. Ich möchte den CSV-Dateinamen behalten, der einfach ein Datum war. Ich fand alle möglichen Sachen online, aber keine scheint zu funktionieren. Empf. Makro legt den Dateinamen fest. –

+0

Convert = Dir (Startpfad & "* .xlsx") 'FileFormat: = xlOpenXMLWorkbook, CreateBackup: = Falsch ActiveWorkbook.SaveAs startPfad & Convert Funktioniert nicht. . . .:/ –

Verwandte Themen