通过超链接打开的工作簿无法关闭的VBA代码问题
解决VBA无法关闭超链接工作簿的问题
问题根源
- 未将打开的工作簿赋值给变量,直接用完整文件路径引用
Workbooks集合会出错——Workbooks的索引是文件名而非完整路径。 - 无用的
hla变量未赋值,With hla块逻辑无效且位置错误(脱离If判断,无论是否有超链接都会执行)。 - 未指定工作表所属的工作簿,
Sheets("ATTENDANCE RECORD")默认引用当前工作簿,而非打开的目标工作簿。 - 代码结构错误:
End If提前闭合,导致后续操作脱离判断逻辑。 cell. Offset存在多余空格,属于语法错误。
修正后的OpenHyperlinkAndCopyData代码
Sub OpenHyperlinkAndCopyData() Dim ws As Worksheet Dim cell As Range Dim hyperlinkAddress As String Dim dataToCopy As Variant Dim targetWB As Workbook ' 存储打开的目标工作簿 Set ws = ThisWorkbook.Sheets("Sheet1") For Each cell In ws.Range("B12:B208") If cell.Hyperlinks.Count > 0 Then hyperlinkAddress = cell.Hyperlinks(1).Address ' 将打开的工作簿赋值给变量,避免路径索引错误 Set targetWB = Workbooks.Open(hyperlinkAddress) ' 指定目标工作簿的工作表,确保数据来源正确 dataToCopy = targetWB.Sheets("ATTENDANCE RECORD").Range("C4").Value cell.Offset(0, 2).Value = dataToCopy ' 通过变量关闭工作簿,操作更可靠 targetWB.Close savechanges:=False Set targetWB = Nothing ' 释放对象内存 End If ' 确保只有存在超链接时才执行后续操作 Next cell End Sub
主代码整合建议
在VBA_Loop_Through_all_Files_in_subfolders_Using_FSO_Early_Binding的末尾添加Call OpenHyperlinkAndCopyData,即可实现生成超链接后自动提取数据的完整流程。
内容的提问来源于stack exchange,提问作者Rose Vittur
相关产品推荐
相关产品推荐

