我正在做一些.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选择“另存为”,但在命名新文件时它会崩溃。
答案 0 :(得分:0)
如果您不想实际显示“另存为”对话框,只想将活动文件另存为特定文件名,请查看Workbook.SaveCopyAs()函数。这可能对你有用。
答案 1 :(得分: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'。