2013-06-24 33 views
0

我在將excel轉換爲csv文件時遇到問題。我的用例是編寫一個宏,將每個工作簿工作表轉換爲csv文件並將它們壓縮爲一個文件。 所以我的代碼是這樣 「OriginalWorkbook.Activate 」對於張數轉換每個到它自己的CSV文件Excel宏從工作簿窗體中創建csv文件窗口彈出問題

For Counter = SHCOUNT + 1 To Sheets.Count 

    'Export as CSV to the root folder 
    Set wks = ActiveWorkbook.Worksheets(Counter) 
    wks.Copy 'to a new workbook 
    Set newWks = ActiveSheet 
    With newWks 
     fileSaveName = Application.GetSaveAsFilename(newWks.Name, _ 
     fileFilter:="CSV Files (*.csv), *.csv") 
     'ActiveWorkbook.SaveAs (fileSaveName) 
     .SaveAs Filename:=fileSaveName, FileFormat:=xlCSV 
     ZipNAme = newWks.Name 
     If fileSaveName <> False Then 
      'newWks.Delete 
      'MsgBox "Save as " & fileSaveName 
     End If 

     .Parent.Close Savechanges:=False 
    End With 

    ''Add the created CSV file to the ZIP file 
    Set oapp = CreateObject("Shell.Application") 
    oapp.Namespace(FolderName).CopyHere fileSaveName 

Next Counter 

但現在我面臨的問題與此代碼,我有一些20張Excel和每張紙,窗口saveas彈出即將到來,我點擊20次保存完成這件事。

我對VB中的編碼非常陌生。任何人都可以幫我解決這個問題嗎? 我不得不繼續彈出,因爲我事先給出了文件名。

感謝, B1

+0

因爲您正在循環中調用'Application.GetSaveAsFilename',所以您將獲得每個文件的彈出窗口! –

+0

有沒有其他方法?或爲此解決方案? –

回答

0
Sub exportcsv() 
Dim ws As Worksheet 
Dim path As String 

path = ActiveWorkbook.path & "\" & Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1) 
For Each ws In Worksheets 
    ws.Copy 
    ActiveWorkbook.SaveAs Filename:=path & "_" & ws.Name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    ActiveWorkbook.Close False 
Next 
End Sub 

希望這有助於,不能保證它可能爲你工作,但它是一個另類,以獲得正確的道路上的東西。我自己也是VBA的新手:)