Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
如何在VBA中保存图纸_Vba_Excel_Csv_Save_Xlsm - Fatal编程技术网

如何在VBA中保存图纸

如何在VBA中保存图纸,vba,excel,csv,save,xlsm,Vba,Excel,Csv,Save,Xlsm,我正在构建一个表单,当您填充它时,它应该生成两个文件作为输出 为了做到这一点,我在后台有两张工作表,我根据用户输入的按钮将它们保存为csv来填充它们 这是保存工作表的代码- Worksheets("worksheetname").SaveAs Filename:="C:\path" & name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 问题是,在用户按下按钮后,他正在填写的表单现在“保存为csv”,而不是像以前那样的xl

我正在构建一个表单,当您填充它时,它应该生成两个文件作为输出

为了做到这一点,我在后台有两张工作表,我根据用户输入的按钮将它们保存为csv来填充它们

这是保存工作表的代码-

Worksheets("worksheetname").SaveAs Filename:="C:\path" & name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
问题是,在用户按下按钮后,他正在填写的表单现在“保存为csv”,而不是像以前那样的xlsm

有没有办法避免这种情况发生?在不影响表单的情况下生成输出


谢谢

若要保持原始工作簿的完整性,您需要在将工作表另存为CSV之前复制一份工作表。试试这个:

Application.DisplayAlerts = False
Worksheets("worksheetname").copy '  Forks a copy of the sheet in a new, active WB
With ActiveWorkbook
    .SaveAs Filename:="C:\Path\" & name & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    .Close False
End With
Application.DisplayAlerts = True

我不确定我在A和您的问题下,您将其保存为.csv,因此它只保存工作表,而不保存VBA用户表单。如果要保留用户表单,则需要将其另存为.xlsm。请指定以下几点:所有数据/工作表的起始状态是什么。?您希望达到的状态是什么?哪些文件包含哪些数据,以何种格式保存在何处?为每个新工作表创建一个新工作簿,然后像当前一样将每个工作表另存为.csv。这会使工作簿保持表单不变。@DavidG我从一个包含3个工作表的xlsm文件开始,我希望用户填写他填写的任何内容,按下按钮,然后我希望生成2个csv文件,而不更改我的文件。csv文件中的数据应该来自我的xlsm文件中的工作表。@DavidG谢谢,A.S.H的答案对我来说非常有用。