Excel 是否可以引用/设置不带扩展名的工作簿的变量?
我试图找到答案,但似乎网上没有答案 代码示例:Excel 是否可以引用/设置不带扩展名的工作簿的变量?,excel,vba,Excel,Vba,我试图找到答案,但似乎网上没有答案 代码示例: dim wb_name as string wb_name = range("A1").value & ".xlsx" set wb = workbooks(wb_name) 如果扩展名有时会更改(例如从旧excel格式更改为新excel格式),是否有办法在不使用“.xlsx”的情况下执行上述操作 是否有某种“一网打尽”的函数可以解释不同类型的扩展 您可以采用通配符方法 Dim wb_name as String wb_name = R
dim wb_name as string
wb_name = range("A1").value & ".xlsx"
set wb = workbooks(wb_name)
- 如果扩展名有时会更改(例如从旧excel格式更改为新excel格式),是否有办法在不使用“.xlsx”的情况下执行上述操作
- 是否有某种“一网打尽”的函数可以解释不同类型的扩展
Dim wb_name as String
wb_name = Range("A1").Value & ".****"
Set wb = Workbooks(wb_name)
您可以使用select case确定Excel版本和文件扩展名/格式
如果Val(Application.Version)<12,则
“您使用的是Excel 97-2003
FileExtStr=“.xls”:FileFormatNum=-4143
其他的
“您使用的是Excel 2007-2016
选择Case wb.FileFormat
案例51:FileExtStr=“.xlsx”:FileFormatNum=51
案例52:
如果.hasvb项目
FileExtStr=“.xlsm”:FileFormatNum=52
其他的
FileExtStr=“.xlsx”:FileFormatNum=51
如果结束
案例56:FileExtStr=“.xls”:FileFormatNum=56
其他情况:FileExtStr=“.xlsb”:FileFormatNum=50
结束选择
如果结束
这里有两个例子
您可以循环浏览打开的工作簿:
Public sub GetWB(byval wb_name as string) as excel.workbook
Dim wbkCurr as excel.workbook
Set getwb=nothing
For each wbkCurr in application.workbooks
If lower(left(wbkCurr.name, instr(wbkCurr.name,”.”))) = lcase(wb_name) then
Set getwb = wbkCurr
Endif
Next wbkCurr
End function
用set wb=getwb(wb\u名称)调用它
在继续之前,只需检查wb是否仍然为空上述链接的可能重复项根本不适用于正在讨论的问题。这些链接用于保存工作簿,而不是将工作簿设置为对象。要应用代码,此代码是否必须已经掌握工作簿?这是一个很好的保存方法,但是如何设置
Destwb
以在此处应用代码?嘿,我尝试了这个方法,但不幸的是,它不起作用,我得到了一个“下标超出范围”错误。通配符方法只有在循环工作簿集合并检查名称的情况下才有效。可以进行增强,以便在用户想要强制使用excel版本时接收可选扩展。如果需要,还可以增强以查看所有打开的excel实例,因为若工作簿是在另一个excel实例中打开的,它将找不到它。
Public sub GetWB(byval wb_name as string) as excel.workbook
Dim wbkCurr as excel.workbook
Set getwb=nothing
For each wbkCurr in application.workbooks
If lower(left(wbkCurr.name, instr(wbkCurr.name,”.”))) = lcase(wb_name) then
Set getwb = wbkCurr
Endif
Next wbkCurr
End function