我正在开发VBA工具来自动执行一系列冗长的管理任务,在以下情况下代码运行良好。
然而,当我的同事在她的电脑上运行时,它无法正确完成。
失败的具体区域是:
'creates 2 dims for location of the two files that need opening based on the critera set on the home page
Dim newdata As String
newdata = Range("f11").Value
Dim olddata As String
olddata = Range("f12").Value
Dim fileextension As String
fileextension = Range("f14").Value
Dim fulllocationolddata As String
fulllocationolddata = Range("f13") & olddata & fileextension
Dim fulllocationnewdata As String
fulllocationnewdata = Range("f13") & newdata & fileextension
'open file containing OLDDATA c&p previous days data to the conversion tool
'then shuts the old data workbook
Workbooks.Open Filename:=fulllocationolddata
Workbooks(olddata).Activate
Worksheets("sheet1").Select
Range("A1").CurrentRegion.Copy
Workbooks("Stockfile Conversion Tool.xlsm").Activate
Sheets("OLD STOCK").Activate
Range("A3").Select
Selection.PasteSpecial
Workbooks(olddata).Activate
Worksheets("sheet1").Select
Workbooks(olddata).Close SaveChanges:=False
最后一行(Workbooks(olddata).Close SaveChanges:= False)没有关闭工作簿,然后在宏中我打开另一个同名的工作簿但是因为它已经打开它只是激活了窗口和其余代码分崩离析。
如果有任何想法我会出错,我们将不胜感激。
提前感谢您的协助
Plan303
答案 0 :(得分:0)
在这里回答我的意见:
Workbooks("Name of the Workbook")
是否有效取决于系统控制中的设置 - 文件夹选项 - 查看 - [x]隐藏已知文件类型的扩展程序。
如果已设置,则Excel的文件扩展名.xlsx
,.xlsm
,...在资源管理器或其他文件列表中不可见。只显示Excel文件的文件名。如果是,那么Workbooks("Name of the Workbook")
将起作用。
如果未设置Hide extensions for known file types
,则在资源管理器或其他文件中可以看到Excel的文件扩展名.xlsx
,.xlsm
,... 列表。如果是,那么Workbooks("Name of the Workbook")
将不工作。然后,只有Workbooks("Name of the Workbook.xlsx")
,名称和的扩展名才有效。
但如果设置Workbooks("Name of the Workbook.xlsx")
,Hide extensions for known file types
也会有效。因此,首选使用全名包含扩展名。
所以对于具体问题:
如果olddata
仅包含工作簿的名称而不包含文件扩展名,则Workbooks(olddata)
仅在Hide extensions for known file types
中设置Folder Options
时才有效。如果未设置该选项并且文件扩展名在资源管理器中可见,则会失败。但Workbooks("Stockfile Conversion Tool.xlsm")
始终与Hide extensions for known file types
是否设置无关。因此,如果Workbooks(olddata & fileextension)
仅包含工作簿的名称,并且olddata
包含fileextension
,则.xlsx
也应始终有效。