尝试将Excel引入" saveas"使用以下代码编写工作簿:
Sub SaveWorkbook(my_FileName, sFolder)
Dim workbook_Name As String
Dim fName As String
fName = CStr(Range("B9").Value)
workbook_Name = "\" & fName & ".xls"
Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name
End Sub
my_FileName
和sFolder
正在被另一个函数传递:
Sub ProduceDoc()
MsgBox "Please Select the File that Contains the Document"
my_FileName = Application.GetOpenFilename(FileFilter:="Excel Files,*.xl*,*.xsl*,*.xm*")
sFolder = "C:\Users\" & InputBox("Please type your employee id") & "\Desktop\" & InputBox("What will you name your folder?")
Workbooks.Open (my_FileName)
SaveWorkbook (my_FileName)
End Sub
该行目前正在抛出下标错误:
Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name
我无法弄清楚原因。我假设它正在发生,因为我忘记了一些简单的事情。
我到目前为止所做的测试:
已验证my_FileName
已成功传递给函数SaveWorkbook()
,并且确实如此。我能够打开功能ProduceDoc()
中指定的文档,并在my_FileName
SaveWorkbook()
我在工具包atm中的所有内容。有什么想法吗?
编辑:我现在更新了行Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name
以显示新状态,并且还调用了sFolder。它仍然给出了同样的错误。
答案 0 :(得分:0)
我明白了。
除了这两行外,所有变量的格式都正确:
workbook_Name = "\" & fName & ".xls"
Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name
Excel并不喜欢这里的一些东西,所以我尽量把它做成基本的。我将sFolder
和workbook_Name
的串联合并到一个变量中,删除了".xls"
,并将fileFormat:=xlWorkbookNormal
参数添加到SaveAs方法中。
我认为这真正解决了我调用SaveAs方法的方法。将其更改为" ActiveWorkbook"而不是以前的。
workbook_Name = sFolder & "\" & fName
ActiveWorkbook.SaveAs fileName:=workbook_Name, fileFormat:=xlWorkbookNormal
这一切现在都符合预期!
希望这有助于将来遇到这种情况的任何人!