2017-03-21 88 views
0

我有一個項目來創建VBA以查找並打開名爲當前月份的文件夾中的所有CSV文件。我在網上發現了一些看似接近但不完全的東西。他們最終將被轉換爲XLSX文件並進行解析。我擁有的那部分。轉換,解析和保存的宏將沿着相同的路徑存放在不同的文件中,但不會「深入」。VBA查找變量文件夾名稱中的所有CSV文件

所以在我的桌面上是一個文件夾名稱「CSV查找測試」。裏面有兩個文件夾「2月」和「3月」。我需要它在最近一個月內打開所有的csv文件。我有其餘的語法。 。 。 。 。

我不會想象它會花費大量的語法。感謝任何方向。

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'是一個變量,而不是一個字符串。刪除雙引號。 – Comintern

+2

另外,如果你正在尋找CSV文件,你的擴展是錯誤的...請參閱這裏瞭解如何遍歷文件夾中的所有CSV文件:https://stackoverflow.com/questions/25163369/open-csv-file-with -excel-vba?rq = 1 –

+2

1.使用'FileMonth = Format(Date,「mmmm」)'獲取完整的月份名稱。 2.在嘗試打開CSV並查看VBE的立即窗口以確保它是正確的之前,使用'Debug.Print FilePath'。如上所述。 – Jeeped

回答

1

我不認爲你真的明白變量是如何工作的,因爲你一直把它放在一個字符串中。如果你把東西放在雙引號中,它會創建一個字符串。以下是如何通過變量將月份添加到字符串。

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

哦,我看到了...非常感謝。以上工作完美。 –

+0

所以我錄製了一個宏來解析出CSV數據。我試圖保存該文件並將其轉換爲xlsx格式。我想保留僅僅是日期的CSV文件名稱。我發現了各種各樣的東西,但似乎沒有工作。 REC。宏設置文件名稱。 –

+0

Convert = Dir(startPath&「* .xlsx」)'FileFormat:= xlOpenXMLWorkbook,CreateBackup:= False ActiveWorkbook.SaveAs startPath&Convert 不工作。 。 。 。:/ –

相關問題