如何在使用 VBA Word 打开文件后解锁 Excel 文件
How to unlock Excel file after opening it trought VBA Word
我正在研究 VBA Word 宏来创建个性化议程。这是通过以下步骤完成的:
- 从 VBA Word,打开一个 Excel 电子表格
- 将电子表格中的预定义范围复制到 Word 中的数组中
- 创建新的 Word 文档,将数组中的每一行插入到单个页面上。
感谢 和一些网站的帮助,我编写了一段代码来执行这三个步骤。
在 运行 代码甚至关闭 Word 之后,我每次在 Excel 中打开电子表格时都会收到一条消息。消息是:
File.xlsm is blocked for edition by 'User'
; (我的用户)
我认为这可能与以下有关:
从 VBA 调用 Excel 单词:我通过创建 ApplicationObject
(app_Excel) 并使用 CreateObject
方法;为了完成应用程序,我使用了 Set app_Excel = Nothing
,然后是 app_Excel.Quit
,如代码所示;或者
从 VBA 打开电子表格 Word:在第一次尝试中我使用 Excel.Workbooks.Open(,,,ReadOnly = False)
,然后我将其更改为 True
,结果相同。
Sub main()
'Main procedure
Word.Application.ScreenUpdating = False
Dim app_Excel As Excel.Application
Set app_Excel = CreateObject("Excel.Application")
Dim wbk_srce As Workbook
Set wbk_srce = app_Excel.Workbooks.Open("C:[=12=]_portolon\Dias.xlsm", , True)
Dim wsh_srce As Worksheet
Set wsh_srce = wbk_srce.Worksheets(3)
wsh_srce.Activate
cell_1 = CStr("A1")
cell_2 = CStr("D216")
Dim header_range As Excel.Range
wsh_srce.Range(cell_1, cell_2).Select
Set header_range = Excel.Selection
Dim header_array() As Variant
header_array = header_range.Value
Set header_range = Nothing
Set wsh_srce = Nothing
Set sbk_srce = Nothing
app_Excel.Quit
'Creates Word document
Call create_agenda(header_array)
End Sub
将数据复制到 Word 后如何解锁电子表格?
提前致谢,
蒂亚戈
根据评论中的建议,我将Set wbk = Nothing
改为wbk.Close
;代码现在可以正常工作了。
谢谢。
Sub main()
'Main procedure
Word.Application.ScreenUpdating = False
Dim app_Excel As Excel.Application
Set app_Excel = CreateObject("Excel.Application")
Dim wbk_srce As Workbook
Set wbk_srce = app_Excel.Workbooks.Open("C:[=10=]_portolon\Dias.xlsm", , True)
Dim wsh_srce As Worksheet
Set wsh_srce = wbk_srce.Worksheets(3)
wsh_srce.Activate
cell_1 = CStr("A1")
cell_2 = CStr("D216")
Dim header_range As Excel.Range
wsh_srce.Range(cell_1, cell_2).Select
Set header_range = Excel.Selection
Dim header_array() As Variant
header_array = header_range.Value
Set header_range = Nothing
Set wsh_srce = Nothing
wbk_srce.Close 'change
app_Excel.Quit
'Creates Word document
Call create_agenda(header_array)
End Sub
我正在研究 VBA Word 宏来创建个性化议程。这是通过以下步骤完成的:
- 从 VBA Word,打开一个 Excel 电子表格
- 将电子表格中的预定义范围复制到 Word 中的数组中
- 创建新的 Word 文档,将数组中的每一行插入到单个页面上。
感谢
在 运行 代码甚至关闭 Word 之后,我每次在 Excel 中打开电子表格时都会收到一条消息。消息是:
File.xlsm is blocked for edition by 'User'
; (我的用户)
我认为这可能与以下有关:
从 VBA 调用 Excel 单词:我通过创建
ApplicationObject
(app_Excel) 并使用CreateObject
方法;为了完成应用程序,我使用了Set app_Excel = Nothing
,然后是app_Excel.Quit
,如代码所示;或者从 VBA 打开电子表格 Word:在第一次尝试中我使用
Excel.Workbooks.Open(,,,ReadOnly = False)
,然后我将其更改为True
,结果相同。
Sub main()
'Main procedure
Word.Application.ScreenUpdating = False
Dim app_Excel As Excel.Application
Set app_Excel = CreateObject("Excel.Application")
Dim wbk_srce As Workbook
Set wbk_srce = app_Excel.Workbooks.Open("C:[=12=]_portolon\Dias.xlsm", , True)
Dim wsh_srce As Worksheet
Set wsh_srce = wbk_srce.Worksheets(3)
wsh_srce.Activate
cell_1 = CStr("A1")
cell_2 = CStr("D216")
Dim header_range As Excel.Range
wsh_srce.Range(cell_1, cell_2).Select
Set header_range = Excel.Selection
Dim header_array() As Variant
header_array = header_range.Value
Set header_range = Nothing
Set wsh_srce = Nothing
Set sbk_srce = Nothing
app_Excel.Quit
'Creates Word document
Call create_agenda(header_array)
End Sub
将数据复制到 Word 后如何解锁电子表格?
提前致谢, 蒂亚戈
根据评论中的建议,我将Set wbk = Nothing
改为wbk.Close
;代码现在可以正常工作了。
谢谢。
Sub main()
'Main procedure
Word.Application.ScreenUpdating = False
Dim app_Excel As Excel.Application
Set app_Excel = CreateObject("Excel.Application")
Dim wbk_srce As Workbook
Set wbk_srce = app_Excel.Workbooks.Open("C:[=10=]_portolon\Dias.xlsm", , True)
Dim wsh_srce As Worksheet
Set wsh_srce = wbk_srce.Worksheets(3)
wsh_srce.Activate
cell_1 = CStr("A1")
cell_2 = CStr("D216")
Dim header_range As Excel.Range
wsh_srce.Range(cell_1, cell_2).Select
Set header_range = Excel.Selection
Dim header_array() As Variant
header_array = header_range.Value
Set header_range = Nothing
Set wsh_srce = Nothing
wbk_srce.Close 'change
app_Excel.Quit
'Creates Word document
Call create_agenda(header_array)
End Sub