VBA(Word 2007)从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。我正在调用“关闭”来关闭所有打开的文件,但仍然没有用 代码由

我正在使用Word 2007生成一组标签,通过IBM Notes中的VBA进行控制

文档生成良好,但生成后选项卡、功能区和菜单没有响应。我可以在生成的文档中单击,但单击任何顶部控件都无效(图标不按入,等等)。 作为一种解决方法,我可以单击另一个窗口,在那里摆弄,然后该特定文档的功能区会做出反应。我假设这与焦点问题有关

代码完成后,我将Word Application.Visible设置为True,ScreenUpdate设置为True。我正在调用“关闭”来关闭所有打开的文件,但仍然没有用

代码由Lotusscript中的IBM Notes数据库调用

你以前遇到过这种情况吗?这很令人费解,对我的客户来说是不可能的

安德鲁

主要功能:

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