VBA(Word 2007)从IBM Notes生成标签后,选项卡、功能区和菜单没有响应
我正在使用Word 2007生成一组标签,通过IBM Notes中的VBA进行控制 文档生成良好,但生成后选项卡、功能区和菜单没有响应。我可以在生成的文档中单击,但单击任何顶部控件都无效(图标不按入,等等)。 作为一种解决方法,我可以单击另一个窗口,在那里摆弄,然后该特定文档的功能区会做出反应。我假设这与焦点问题有关 代码完成后,我将Word Application.Visible设置为True,ScreenUpdate设置为True。我正在调用“关闭”来关闭所有打开的文件,但仍然没有用 代码由Lotusscript中的IBM Notes数据库调用 你以前遇到过这种情况吗?这很令人费解,对我的客户来说是不可能的 安德鲁 主要功能:VBA(Word 2007)从IBM Notes生成标签后,选项卡、功能区和菜单没有响应,vba,lotus-notes,ole,word-2007,Vba,Lotus Notes,Ole,Word 2007,我正在使用Word 2007生成一组标签,通过IBM Notes中的VBA进行控制 文档生成良好,但生成后选项卡、功能区和菜单没有响应。我可以在生成的文档中单击,但单击任何顶部控件都无效(图标不按入,等等)。 作为一种解决方法,我可以单击另一个窗口,在那里摆弄,然后该特定文档的功能区会做出反应。我假设这与焦点问题有关 代码完成后,我将Word Application.Visible设置为True,ScreenUpdate设置为True。我正在调用“关闭”来关闭所有打开的文件,但仍然没有用 代码由
Dim p As New LabelSourceFile
Call p.GenerateFileForSelectedDocuments()
Call p.ExtractWordTemplateFromConfig()
Dim w As New WordExport
w.setSelectedTemplateFullFile(p.FilePathToTemplate)
Print "file path to template: " + p.FilePathToTemplate
Call w.InitializeWordDocument()
Dim finaldoc As Variant
set finaldoc = w.MailMergeWithThisFile(p.getDataFileStreamFileName())
Call w.ReplaceCRWithCarriageReturns(finaldoc)
finaldoc.Activate 'gives focus back to document I've just generated
Set finaldoc = Nothing
'p.DeleteVorlage
'Kill p.FilePathToDataFile
Call w.ReleaseToUser()
此函数用于初始化我的文档:
Public Function InitializeWordDocument As Integer
'Initialize a Word Document Object
' If m_strSelectedTemplateFullFile = "" an empty document is created
InitializeWordDocument = False
'On Error Goto ErrorHdl
m_objWordApplication.DisplayAlerts = wdAlertsnone
If Not m_objWordApplication Is Nothing Then
If m_strSelectedTemplateFullFile <> "" Then
Set m_objWordDoc = m_objWordApplication.Documents.Add( m_strSelectedTemplateFullFile )
InitializeWordDocument = True
Else
Set m_objWordDoc = m_objWordApplication.Documents.Add()
End If
Set m_objCurrentRange = m_objWordDoc.Range(0,0)
End If
m_objWordApplication.DisplayAlerts = wdAlertsAll
Exit Function
ErrorHdl:
InitializeWordDocument = False
Exit Function
End Function
在我得到答案之前,通过无脑地注释出几行文字,以下是我的解决方法: 始终创建一个新实例(CreateObject)并忘记GetObject 如果有人对此有很好的解释,我很乐意听到。目前,我只打算使用变通方法
'Initialize the Word Object
Set m_objWordApplication = Nothing
'I create always a new Word instance because that avoids me having focus issues.
' Set m_objWordApplication = GetObject("","word.application")
' If m_objWordApplication Is Nothing Then
Set m_objWordApplication = CreateObject("word.application")
' End If
'Initialize the Word Object
Set m_objWordApplication = Nothing
'I create always a new Word instance because that avoids me having focus issues.
' Set m_objWordApplication = GetObject("","word.application")
' If m_objWordApplication Is Nothing Then
Set m_objWordApplication = CreateObject("word.application")
' End If