excel - 下标超出范围错误 - saveas 方法
问题描述
尝试使用以下代码让 Excel “保存”工作簿:
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 也被调用。它仍然给出同样的错误。
解决方案
我想到了。
除以下两行外,所有变量中的所有内容均已正确格式化:
workbook_Name = "\" & fName & ".xls"
Workbooks(my_FileName).SaveAs fileName:=sFolder & workbook_Name
Excel 不喜欢这里的一些东西,所以我尽量使它尽可能基本。sFolder
我将和的串联组合workbook_Name
到一个变量中, removed ".xls"
并将fileFormat:=xlWorkbookNormal
参数添加到 SaveAs 方法中。
我认为真正解决这个问题的是我如何调用 SaveAs 方法。将其更改为“ActiveWorkbook”,而不是以前的。
workbook_Name = sFolder & "\" & fName
ActiveWorkbook.SaveAs fileName:=workbook_Name, fileFormat:=xlWorkbookNormal
现在一切都按预期运行!
希望这对将来遇到此问题的人有所帮助!
推荐阅读
- sql - 使用 sqoop 将表从 RDBMS 导入 HIVE 后约束是否仍然存在?
- java - 无法将 AndroidKeyStore 序列化为 OutputStream
- html - 项目符号列表未在 blogdown .rmd 文件中呈现
- javascript - 发送以查看.....来自两个不同数据库的信息
- php - 验证 Laravel 请求的最佳方法
- vba - 用户表单 - 搜索重复项
- azure - 如何在 Azure DevOps 中构建多个相互依赖的 Visual Studio 解决方案
- firefox - 在 Firefox 中检测到网站前缀时自动重定向到另一个网页
- android - 在 Unity 中出现异常“未找到类“com.google.android.gms.gcm.GcmReceiver”
- python-3.x - Luigi 任务进入无限循环