簡體   English   中英

VBA-多個工作表CSV導出在同一文件夾中

[英]VBA - Multiple sheets CSV export in the same folder

我有一個VBA宏,它允許我以CSV格式導出(使用逗號作為分隔符)我的excel文件的某些表,在這種情況下,前7頁。 我有以下問題:

  1. 該代碼允許導出第一個-n張紙,但是我想將代碼按名稱選擇。 在這種情況下,我還可以導出名為“ MILANO”的工作表1和名為“ ROME”的工作表5。

  2. 我找不到自動將CSV文件保存在源excel文件的同一文件夾中的方法。 我使用ActiveWorkbook.Path或ThisWorkbook.Path,但我想我做錯了

  3. 我無法僅導出每張工作表中非空的行,因為在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM