gpt4 book ai didi

excel - 将每个工作表导出到单独的 csv 文件

转载 作者:行者123 更新时间:2023-12-02 07:28:28 28 4
gpt4 key购买 nike

我需要通过 VBA/VBS 脚本以编程方式将所有工作表(总共 4 个,我知道名称)导出到同一文件夹中名为 csv 文件的工作表,而无需加载 excel 并手动运行宏。

理想情况下,脚本会将源文件路径/文件名.xls 和导出文件路径作为命令行参数。

我已经阅读了许多 Excel VBA 脚本来在 Excel 中执行此操作,并且我还看到了一些用于加载 Excel 工作簿以导出第一个工作表的脚本。但是,当我尝试将两者混合时,我收到此错误:

(1,12) Expected End of Statement

Dim source As Workbook
Set source = Application.Workbooks.Open(WScript.Arguments.Item(0), ReadOnly:=True)
For Each sheet In source.Sheets
.SaveAs Filename:= WScript.Arguments.Item(1) & Source.Sheets.Name, FileFormat:=xlCSV
Next sheet
wb.Close

最佳答案

一个运行这段代码看起来像这样。

  1. vbs文件可以从命令行执行
  2. 文件夹名称是多余的,就像文件存在一样(FSO 对象对此进行测试),那么它所在的文件夹也必须存在
  3. 代码自动执行 Excel 来分隔工作表

与上面的 VBA 相比需要注意的两个要点

  • 你不能将 vbs 对象调暗为字符串、工作簿等(因此是你最初的错误)。您只能调暗它们
  • 您不能在 vbscript 中使用命名常量,例如 xlCSV,因此使用下面的 6 作为 CSV 格式

    Dim strFilename  
    Dim objFSO
    Set objFSO = CreateObject("scripting.filesystemobject")
    strFilename = "C:\temp\test.xlsx"
    If objFSO.fileexists(strFilename) Then
    Call Writefile(strFilename)
    Else
    wscript.echo "no such file!"
    End If
    Set objFSO = Nothing

    Sub Writefile(ByVal strFilename)
    Dim objExcel
    Dim objWB
    Dim objws

    Set objExcel = CreateObject("Excel.Application")
    Set objWB = objExcel.Workbooks.Open(strFilename)

    For Each objws In objWB.Sheets
    objws.Copy
    objExcel.ActiveWorkbook.SaveAs objWB.Path & "\" & objws.Name & ".csv", 6
    objExcel.ActiveWorkbook.Close False
    Next

    objWB.Close False
    objExcel.Quit
    Set objExcel = Nothing
    End Sub

关于excel - 将每个工作表导出到单独的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8434994/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com