0

我正在做一些 .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 文件来使用电子表格中指定的值来命名其他文档类型。

谢谢你的帮助!


显然这可能是不可能的:如何使用 VBScript 中的常见“另存为”对话框?

我也尝试过使用 sendkeys 来选择“另存为”,尽管在命名新文件时它会分崩离析。

4

2 回答 2

0

感谢您的答复。我会调查一下。

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

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”会在前面指定。

于 2013-09-22T11:43:44.070 回答
0

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

于 2013-09-22T11:35:31.833 回答