多工作表导出一个到CSV并自动保存,没有提示

时间:2017-04-21 09:23:46

标签: excel vba csv

对宏没有做太多,但有些。我搜索并发现了一些类似于我需要做的事情,但并不确切,并想知道是否有人可以提供帮助 为了工作,我有一个包含多个工作表的excel工作簿,并且我创建了一个工作簿并保存为CSV,因为我们使用的程序只接受txt或csv格式,因此每次我们要导入数据时都要保存。我基本上希望有一个数据表能够自动保存在文件夹中的csv文件中,该文件将在没有提示的情况下保存,因此程序可以自动从中导入数据。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用Worksheet.Copy

  

如果未指定“之前”或“之后”,Microsoft Excel将创建一个新工作簿,其中包含复制的工作表对象,其中包含复制的Worksheet对象。新创建的工作簿包含Application.ActiveWorkbook Property(Excel)属性并包含单个工作表。

     

单个工作表保留源工作表的Worksheet.Name属性(Excel)和Worksheet.CodeName属性(Excel)属性。

     

如果复制的工作表在VBA项目中保存了工作表代码表,那么它也会被带入新工作簿。

尝试:

Option Explicit

Sub Main()
    ' Call your Sub
    CopySheet2CSV ThisWorkbook.Sheets("Tabelle1")
End Sub

Sub CopySheet2CSV(ws As Worksheet)
    ws.Copy
    ActiveWorkbook.SaveAs Filename:="C:\Users\b036081\NoBackupData\" & ws.Name & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
    ActiveWindow.Close Savechanges:=False
End Sub

利用.Copy方便地将ActiveWorkbook设置为包含单张工作表的新创建工作簿的事实。

将其另存为csv,然后关闭它,从而返回源工作表。

注意:请勿明确关闭所有提示。相反,省略通过在保存时设置CreateBackup:=False并在关闭csv-workbook时设置Savechanges:=False来手动执行此操作时获得的两个标准提示。

这样,在文件存在或出现错误的情况下,仍会提示您。

相关问题