如何使用 .vbs 文件保存具有在电子表格中指定的名称的文件

Posted

技术标签:

【中文标题】如何使用 .vbs 文件保存具有在电子表格中指定的名称的文件【英文标题】:How to save a file with a name which is specified in a spreadsheet, using a .vbs file 【发布时间】:2013-09-21 16:16:18 【问题描述】:

我正在做一些 .vbs 编码,我想在其中打开一个现有模板文件,对其进行一些更改,然后使用单元格 B2 中指定的文件名“另存为”。

Set objExcel = CreateObject("Excel.Application")

FileDirectory = "C:\Users\j128\Desktop\"
FileName = "TEMPLATE.xlsx"

Set objWorkbook = objExcel.Workbooks.Open(FileDirectory+FileName)

objExcel.Visible = True
objExcel.Cells(2,2).value = "Variable" 'Changes will occur in this section

ActiveWorkbook.SaveAs Filename = cells(2,2).value 'This is where problems occur

我意识到我已经可以使用宏来使用单元格中指定的值来命名 Excel 文件。不过,我打算使用这个 .vbs 文件来使用电子表格中指定的值来命名其他文档类型。

感谢您的帮助!


显然不可能:How can I use the common Save As dialog from VBScript?

我也尝试使用 sendkeys 来选择“另存为”,但在命名新文件时它会崩溃。

【问题讨论】:

【参考方案1】:

如果您不想实际显示“另存为”对话框而只想将活动文件另存为特定文件名,请查看 Workbook.SaveCopyAs() 函数。这可能对你有用。

【讨论】:

【参考方案2】:

感谢您的回复。我会研究一下。

我尝试过的另一件事是简单地复制并重命名文件:

Set WSHShell = CreateObject("Wscript.Shell")
CurrentDirectory = WSHShell.CurrentDirectory & "\"

Template = "TEMPLATE.xlsx"
NewFile = "New File.xlsx"

Set objFSO = CreateObject("Scripting.FileSystemObject")
' First parameter: original location&file
' Second parameter: new location&file
objFSO.CopyFile CurrentDirectory&Template, CurrentDirectory&NewFile

我现在需要的是能够动态地将“NewFile”设置为另一个电子表格中的单元格。

编辑:显然这样的事情可以让我在其他地方的单元格中指定“NewFile”输入:

value1 = xlSht.Cells(2, 1) 'Example of how to specify a value as equal to the value in cell A2

请注意,“xlSht”会在前面指定。

【讨论】:

以上是关于如何使用 .vbs 文件保存具有在电子表格中指定的名称的文件的主要内容,如果未能解决你的问题,请参考以下文章

电子表格如何保存?

如何使用 R 中指定的列名创建空数据框? [复制]

如何用bat抓取out文件中指定的数值并保存到新的txt文件中?

如何将excel表格中多行的部分数据分别提取到另一表格中指定的多行固定位置?

word中的内容如何导入Excel指定表格里?

js将表格中指定的行隐藏