【问题标题】:VBA - Opening word document to export data from excel to word docVBA - 打开word文档以将数据从excel导出到word doc
【发布时间】:2017-07-31 20:35:02
【问题描述】:

我有一点我无法解决的问题。

我编写了 VBA 代码以将单元格数据从 excel 导出到 word 文本框。

它是如何工作的: 我在 excel 文档中有一个按钮,您可以突出显示要使用的行,然后按下按钮,然后从我告诉它的所有单元格中获取数据并将它们导入 word。

我遇到的问题是,如果我选择另一行并再次按下按钮,它会尝试再次打开同一个 word 文档,并且由于它已经打开而出现错误。有没有我可以做的 if 语句来检查它是否打开,如果它没有打开,是否使用活动单词 doc?

这是我当前的代码

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open "C:\Users\swhiston\Desktop\IT Services Invoice.docx"

谢谢 伟大的Sc0tt

【问题讨论】:

    标签: vba excel if-statement ms-word


    【解决方案1】:

    您希望 Word 对象在模块/类级别声明并在打开之前测试它是否已经打开

    Option Explicit
    Dim objWord As Object
    Dim objDoc as Object
    
    Sub OpenWord()
    
        Set objWord = CreateObject("Word.Application")
        objWord.Visible = True
        set objDoc = objWord.Documents.Open( "C:\Users\swhiston\Desktop\IT Services Invoice.docx")
    
    End Sub
    
    
    Sub MyCodeHere()
    
        'Open Word If It's Not Already Open
        If objwork Is Nothing Then OpenWord
        'Your Code Here
    
    End Sub
    

    【讨论】:

    • 添加文档变量对这种结构非常有帮助(必要)。 ;)
    【解决方案2】:

    每当您尝试执行代码时,它都会重新打开同一个文件,因此请应用一个条件来检查文件是否打开,如果没有,则仅打开文件,或者每次您应该在结束时关闭文件你的代码。

    您可以参考:Detect whether Excel workbook is already open

    将此保留在其他部分:

    objWord.Documents.Open "C:\Users\swhiston\Desktop\IT Services Invoice.docx"
    

    【讨论】:

    • 我是使用 VBA 的 n00b。只是学习。我不确定如何测试它是否打开
    • 所以这是一个巨大的帮助先生。现在我有它,这样如果 doc 是打开的,就会显示一条消息,告诉他们关闭它。如果什么都没有打开,那么它会转到 else 并运行我的代码来打开它。我仍然遇到的问题是如何使用打开的word文档。我要继续将 excel 中的导出添加到 word 中
    • @GreatSc0tt - 可以在写有 msgbx 的代码中编写您的代码,您可以使用已用作对象的变量 objword 来引用打开的 word 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多