[英]VBA - Multiple sheets CSV export in the same folder
我有一個VBA宏,它允許我以CSV格式導出(使用逗號作為分隔符)我的excel文件的某些表,在這種情況下,前7頁。 我有以下問題:
該代碼允許導出第一個-n張紙,但是我想將代碼按名稱選擇。 在這種情況下,我還可以導出名為“ MILANO”的工作表1和名為“ ROME”的工作表5。
我找不到自動將CSV文件保存在源excel文件的同一文件夾中的方法。 我使用ActiveWorkbook.Path或ThisWorkbook.Path,但我想我做錯了
我無法僅導出每張工作表中非空的行,因為在CSV中,我看到帶有、、、、、、、、、
這里是宏:
Sub CreateCSV()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'-----------------------------
'DECLARE AND SET VARIABLES
Dim wb1 As Workbook, ws1 As Worksheet
Dim wbname As String, I As Integer
Set wb1 = ThisWorkbook
'-----------------------------
'CYCLE THROUGH SHEETS AND MATCH UPLOAD
For I = 1 To 7
wbname = Worksheets(I).Name
'-----------------------------
'COPY SHEET INTO NEW CSV FILE
Worksheets(I).Copy
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "/" & wbname & "/.csv", _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close
wb1.Activate
Next I
'-----------------------------
'CLEANUP
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
謝謝!
嘗試此為您的要點2
ActiveWorkbook.SaveAs文件名:= wb1.Path&“ \\”&wbname&“ .csv”,_
關於按名稱訪問工作表,您可以執行以下操作:
set sh = ThisWorkBook.Sheets("MILANO")
但是由於您仍然想遍歷工作表,因此需要一個帶有工作表名稱的數組,如下所示:
Dim mySheets as Variant
Dim sh as WorkSheet
Dim I as Long
mySheets=Array("MILANO" , "MONACO", "ROME")
For I = 0 to UBound(mySheets)
Set sh = ThisWorkBook.Sheets(mySheets(I))
sh.SaveAs FileName:=ThisWorkBook.Path & "\" & mySheets(I), _
FileFormat:=xlCSV
Next I
因此,您需要使用WorkSheet.SaveAs而不是WorkBook.SaveAs
至於“我不能只導出每張工作表中的非空行,如CSV中那樣,我看到帶有、、、、、、、、、的數百行”,也許您需要先清理工作表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.