我有一個包含多個工作表的Excel文件。我需要一個可以執行以下操作的宏。Excel VBA將數據導出爲CSV
- 選擇具有指定工作表名稱的工作表。
- 從工作表中選擇第一列數據長度大於1的所有行
- 將選定數據導出爲指定目錄中的CSV文件。
我對Excel VBA有一個非常基本的理解,並且不勝感激。
謝謝,
我有一個包含多個工作表的Excel文件。我需要一個可以執行以下操作的宏。Excel VBA將數據導出爲CSV
我對Excel VBA有一個非常基本的理解,並且不勝感激。
謝謝,
我會爲您提供一些示例代碼。由於我們不是在這裏編寫完整的代碼,因此您的任務是深入並將代碼放在一起。
1.如果要選擇工作表,則需要調用Select
工作表對象的方法。有多種引用表的方式,但最常見的(IMO)是Sheets("Name of the sheet").Select
。
2a。對於選擇單元格,過程是相同的,但不是單張,您必須使用單元格對象,即:Cells(r, c).Select
(同樣,這不是引用單元格的唯一方法,另一個是:Range("A1").Select
),其中r
和c
分別是代表行和列的整數。一般來說,您需要撥打Select
類型的對象Range
。
摘要
到目前爲止,我介紹瞭如何在工作簿中選擇特定的對象,但它沒有這樣做的最佳方式。除非你需要明確選擇,否則我不會這樣做。代碼
Sheets("SheetName").Cells(r, c).Value
這是結合前面的部分,用於訪問在名爲SheetName
紙r
行和列c
單元格的值,沒有做出任何選擇:相反,你可以在某些表中使用以下語法獲取某些細胞的價值。這樣你可以設置或獲取值。
2b。如果你想測試一些東西,如條件,請使用If
聲明。在你的情況下,它看起來像:
If Len(Sheets("SheetName").Cells(r, c).Value) > 1 Then
'do something if it's true
Else
'do something if it's false
End If
你將不得不創造一些字符串變量,像Dim content As String
,你會從通過測試細胞中添加的所有數據。畢竟,你可以將這個文本變量寫入一個文件。這可能是有用的:How to create and write to a txt file using VBA
此外,還通過所有行需要循環,所以你需要循環語句,去這裏瞭解更多詳情:Loops in VBA
我希望能給你做什麼了一些線索,如何做:)
這應該讓你非常接近你想要的地方。
Public Sub SaveWorksheetsAsCsv()
Dim xWs As Worksheet
Dim xDir As String
Dim folder As FileDialog
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
For Each xWs In Application.ActiveWorkbook.Worksheets
xWs.SaveAs xDir & "\" & xWs.Name, xlCSV
Next
End Sub