【发布时间】:2020-04-14 15:51:21
【问题描述】:
如何将工作簿设置为稍后在 sub 中使用的变量名称?
我正在尝试打开一个工作簿 (PriceFile) 并将此工作簿中的值设置为原始工作簿 (TestFile) 中的值。我可以打开 PriceFile 但无法命名工作簿。
Public Sub Get_Sum_Assured()
Dim TestFile As Workbook
Dim PriceFile As Workbook
Dim PriceFileName As String
Dim Test_Cases As Integer
Dim FirstTest As Integer
Dim CommDate As Date
Dim DOB As Date
Dim MonthPrem As Long
Dim SumAssured As Long
Dim TestCount As Integer
Set TestFile = ThisWorkbook
Call Open_Pricing_File
TestFile.Activate
PriceFileName = Range("Pricing_File").Value
Set PriceFile = Workbooks(PriceFileName)
Open_Pricing_File 打开以“Pricing_File”命名的文件,当我逐步完成这项工作时。当我尝试将 PriceFile 设置为此工作簿时,代码会落在最后一行。
【问题讨论】:
-
PriceFileName = Range("Pricing_File").Value您应该始终指定范围所在的工作表(以及工作簿,如果有多个)。对于最佳实践,请使用Testfile.Sheets("your sheet here").Range(等。不确定这是否是这里的问题,但很可能。否则它将只取所显示的工作表的范围,这可能是不正确的。 -
workbooks集合是指当前打开的工作簿。工作簿是否以存储在PriceFileName中的任何字符串命名,打开?如果你想打开它,你需要使用workbooks.open()方法。 -
Plutian:我已按照您的建议更新了代码,并且在监视窗口中获得了正确的 PriceFileName 值。当我尝试将工作簿命名为 PriceFile 时,仍然出现运行时错误 9。值是“filepath.xlsx” - 名称周围的“”会影响这个吗?
-
Stavros Jon:PriceFileName 中的工作簿是在 Open_Pricing_File 中打开的工作簿,因此肯定会打开。该代码正在设法打开文件,然后无法应对。
-
为什么你有一个单独的子来打开文件?有什么特别的原因吗?如果
Workbooks.Open行在这个Get_Sum_Assured子中,那么你可以在那个时候Set它。