Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel宏从工作簿工作表创建csv文件windows弹出窗口问题_Excel_Vba_Macos - Fatal编程技术网

Excel宏从工作簿工作表创建csv文件windows弹出窗口问题

Excel宏从工作簿工作表创建csv文件windows弹出窗口问题,excel,vba,macos,Excel,Vba,Macos,我在将excel转换为csv文件时遇到问题。我的用例是编写一个宏,将每个工作簿工作表转换为csv文件,并将它们压缩为单个文件。 所以我的代码是这样的 '原始工作簿.Activate '对于图纸数量,请将每个图纸转换为其自己的CSV文件 For Counter = SHCOUNT + 1 To Sheets.Count 'Export as CSV to the root folder Set wks = ActiveWorkbook.Worksheets(Counter)

我在将excel转换为csv文件时遇到问题。我的用例是编写一个宏,将每个工作簿工作表转换为csv文件,并将它们压缩为单个文件。 所以我的代码是这样的 '原始工作簿.Activate '对于图纸数量,请将每个图纸转换为其自己的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
计数器=SHCOUNT+1到工作表。计数
'作为CSV导出到根文件夹
设置wks=ActiveWorkbook.工作表(计数器)
工作。将“复制”到新工作簿
设置newWks=ActiveSheet
有新作品
fileSaveName=Application.GetSaveAsFilename(newWks.Name_
fileFilter:=“CSV文件(*.CSV),*.CSV”)
'ActiveWorkbook.SaveAs(fileSaveName)
.SaveAs文件名:=文件名,文件格式:=xlCSV
ZipNAme=newWks.Name
如果fileSaveName为False,则
'newWks.Delete
'MsgBox“另存为”&文件名
如果结束
.Parent.Close Savechanges:=False
以
''将创建的CSV文件添加到ZIP文件
设置oapp=CreateObject(“Shell.Application”)
名称空间(FolderName).CopyHere文件名
下一个柜台
但现在我面临着一个问题,这段代码,我在excel中有大约20张工作表,每一张工作表都会出现windows saveas弹出窗口,我点击了20次save来完成整个工作

我对VB中的编码非常陌生。有人能帮我解决这个问题吗? 我必须在没有任何“另存为”弹出窗口的情况下继续操作,因为我事先给出了文件名

谢谢, B1


希望这能有所帮助,但不能保证它对你有用,但它是让事情走上正确道路的另一种选择。我自己也是VBA新手:)

您将获得每个文件的弹出窗口,因为您正在循环中调用
应用程序.GetSaveAsFilename
!还有别的办法吗?还是解决这个问题的办法?
    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