下标超出范围错误 - saveas方法

时间:2018-04-26 19:35:34

标签: excel vba excel-vba pc

尝试将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_FileNamesFolder正在被另一个函数传递:

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。它仍然给出了同样的错误。

1 个答案:

答案 0 :(得分:0)

我明白了。

除了这两行外,所有变量的格式都正确:

workbook_Name = "\" & fName & ".xls"

Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name

Excel并不喜欢这里的一些东西,所以我尽量把它做成基本的。我将sFolderworkbook_Name的串联合并到一个变量中,删除了".xls",并将fileFormat:=xlWorkbookNormal参数添加到SaveAs方法中。

我认为这真正解决了我调用SaveAs方法的方法。将其更改为" ActiveWorkbook"而不是以前的。

workbook_Name = sFolder & "\" & fName

ActiveWorkbook.SaveAs fileName:=workbook_Name, fileFormat:=xlWorkbookNormal

这一切现在都符合预期!

希望这有助于将来遇到这种情况的任何人!