Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用vba打开Word应用程序_Vba_Excel - Fatal编程技术网

如何使用vba打开Word应用程序

如何使用vba打开Word应用程序,vba,excel,Vba,Excel,我有密码。2016年不会运行。这是Office 16的问题吗 Dim objWordApp作为Word.Application Dim objWordDoc作为Word.document 设置objWordApp=new Word.application 加载DLL时出现错误。我已经包含了库Microsoft word 16.0对象库 问候 安娜我不确定你出了什么问题,但如果你只是想用默认的MS office打开一个新的word文档,那么你可以使用这种代码的和平 Sub wordopener()

我有密码。2016年不会运行。这是Office 16的问题吗

Dim objWordApp作为Word.Application
Dim objWordDoc作为Word.document
设置objWordApp=new Word.application

加载DLL时出现错误。我已经包含了库Microsoft word 16.0对象库

问候
安娜

我不确定你出了什么问题,但如果你只是想用默认的MS office打开一个新的word文档,那么你可以使用这种代码的和平

Sub wordopener()
  Dim objWord
  Dim objDoc
  Set objWord = CreateObject("Word.Application")
  Set objDoc = objWord.Documents.Add
  objWord.Visible = True
End Sub

我不确定你出了什么问题,但如果你只是想用默认的MS office打开一个新的word文档,那么你可以使用这种代码的和平

Sub wordopener()
  Dim objWord
  Dim objDoc
  Set objWord = CreateObject("Word.Application")
  Set objDoc = objWord.Documents.Add
  objWord.Visible = True
End Sub

您正在尝试使用早期绑定。这是明智的,因为它是一个有点快,它给你的智能感觉,这是很好的。但是,要使用它,您应该添加相应的库

但是,如果使用较慢的后期绑定,则不需要添加任何库。它没有智能感知,速度会慢一些(但可能不明显)

试着这样做:

Option Explicit

Sub TestMe()

    Dim objWord As Object
    Dim objDoc  As Object

    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add
    objWord.Visible = True

End Sub

您正在尝试使用早期绑定。这是明智的,因为它是一个有点快,它给你的智能感觉,这是很好的。但是,要使用它,您应该添加相应的库

但是,如果使用较慢的后期绑定,则不需要添加任何库。它没有智能感知,速度会慢一些(但可能不明显)

试着这样做:

Option Explicit

Sub TestMe()

    Dim objWord As Object
    Dim objDoc  As Object

    Set objWord = CreateObject("Word.Application")
    Set objDoc = objWord.Documents.Add
    objWord.Visible = True

End Sub

我通常有一个
BAS
文件,其中包含“CreateWord”函数,我可以将它拖到任何需要它的工作簿/数据库中

首先,它使用
GetObject
测试Word是否已经打开。如果返回错误,它将使用
CreateObject
创建Word实例

Sub Test()

    Dim oWD_App As Object
    Dim oWD_Doc As Object

    Set oWD_App = CreateWord

    With oWD_App
        Set oWD_Doc = .Documents.Add
    End With

End Sub


Public Function CreateWord(Optional bVisible As Boolean = True) As Object

    Dim oTempWD As Object

    On Error Resume Next
    Set oTempWD = GetObject(, "Word.Application")

    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo ERROR_HANDLER
        Set oTempWD = CreateObject("Word.Application")
    End If

    oTempWD.Visible = bVisible
    Set CreateWord = oTempWD

    On Error GoTo 0
    Exit Function

ERROR_HANDLER:
    Select Case Err.Number

        Case Else
            MsgBox "Error " & Err.Number & vbCr & _
                " (" & Err.Description & ") in procedure CreateWord."
            Err.Clear
    End Select

End Function
然后,只需使用
Set-oWD\u-App=CreateWord
即可打开Word应用程序

Sub Test()

    Dim oWD_App As Object
    Dim oWD_Doc As Object

    Set oWD_App = CreateWord

    With oWD_App
        Set oWD_Doc = .Documents.Add
    End With

End Sub


Public Function CreateWord(Optional bVisible As Boolean = True) As Object

    Dim oTempWD As Object

    On Error Resume Next
    Set oTempWD = GetObject(, "Word.Application")

    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo ERROR_HANDLER
        Set oTempWD = CreateObject("Word.Application")
    End If

    oTempWD.Visible = bVisible
    Set CreateWord = oTempWD

    On Error GoTo 0
    Exit Function

ERROR_HANDLER:
    Select Case Err.Number

        Case Else
            MsgBox "Error " & Err.Number & vbCr & _
                " (" & Err.Description & ") in procedure CreateWord."
            Err.Clear
    End Select

End Function
子测试()
Dim oWD_应用程序作为对象
作为对象的Dim oWD_文档
设置oWD_App=CreateWord
使用oWD_应用程序
设置oWD_Doc=.Documents.Add
以
端接头
作为对象的公共函数CreateWord(可选bVisible为Boolean=True)
作为对象的Dim oTempWD
出错时继续下一步
Set-oTempWD=GetObject(,“Word.Application”)
如果错误号为0,则
呃,明白了
关于错误转到错误处理程序
设置oTempWD=CreateObject(“Word.Application”)
如果结束
oTempWD.Visible=bVisible
设置CreateWord=oTempWD
错误转到0
退出功能
错误\u处理程序:
选择案例错误编号
其他情况
MsgBox“错误”和错误编号、vbCr和_
过程CreateWord中的(&Err.Description&')
呃,明白了
结束选择
端函数

我通常有一个
BAS
文件,其中包含“CreateWord”函数,我可以将它拖到任何需要它的工作簿/数据库中

首先,它使用
GetObject
测试Word是否已经打开。如果返回错误,它将使用
CreateObject
创建Word实例

Sub Test()

    Dim oWD_App As Object
    Dim oWD_Doc As Object

    Set oWD_App = CreateWord

    With oWD_App
        Set oWD_Doc = .Documents.Add
    End With

End Sub


Public Function CreateWord(Optional bVisible As Boolean = True) As Object

    Dim oTempWD As Object

    On Error Resume Next
    Set oTempWD = GetObject(, "Word.Application")

    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo ERROR_HANDLER
        Set oTempWD = CreateObject("Word.Application")
    End If

    oTempWD.Visible = bVisible
    Set CreateWord = oTempWD

    On Error GoTo 0
    Exit Function

ERROR_HANDLER:
    Select Case Err.Number

        Case Else
            MsgBox "Error " & Err.Number & vbCr & _
                " (" & Err.Description & ") in procedure CreateWord."
            Err.Clear
    End Select

End Function
然后,只需使用
Set-oWD\u-App=CreateWord
即可打开Word应用程序

Sub Test()

    Dim oWD_App As Object
    Dim oWD_Doc As Object

    Set oWD_App = CreateWord

    With oWD_App
        Set oWD_Doc = .Documents.Add
    End With

End Sub


Public Function CreateWord(Optional bVisible As Boolean = True) As Object

    Dim oTempWD As Object

    On Error Resume Next
    Set oTempWD = GetObject(, "Word.Application")

    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo ERROR_HANDLER
        Set oTempWD = CreateObject("Word.Application")
    End If

    oTempWD.Visible = bVisible
    Set CreateWord = oTempWD

    On Error GoTo 0
    Exit Function

ERROR_HANDLER:
    Select Case Err.Number

        Case Else
            MsgBox "Error " & Err.Number & vbCr & _
                " (" & Err.Description & ") in procedure CreateWord."
            Err.Clear
    End Select

End Function
子测试()
Dim oWD_应用程序作为对象
作为对象的Dim oWD_文档
设置oWD_App=CreateWord
使用oWD_应用程序
设置oWD_Doc=.Documents.Add
以
端接头
作为对象的公共函数CreateWord(可选bVisible为Boolean=True)
作为对象的Dim oTempWD
出错时继续下一步
Set-oTempWD=GetObject(,“Word.Application”)
如果错误号为0,则
呃,明白了
关于错误转到错误处理程序
设置oTempWD=CreateObject(“Word.Application”)
如果结束
oTempWD.Visible=bVisible
设置CreateWord=oTempWD
错误转到0
退出功能
错误\u处理程序:
选择案例错误编号
其他情况
MsgBox“错误”和错误编号、vbCr和_
过程CreateWord中的(&Err.Description&')
呃,明白了
结束选择
端函数

将给定的引用添加到VBE后,您的代码对我来说运行良好。那么,你能详细说明一下吗?不运行并没有真正的帮助。你收到错误信息了吗?如果是这样的话,你能告诉我们你得到的错误吗?您是否能够在另一台安装了MS Word和MS Excel 2016的计算机/系统上尝试您的代码?也许您还可以分享一些系统见解,因为这似乎是一个非编程问题:Citrix设置?其他版本的Office共同安装,等等?你能给一个屏幕截图,你如何包括图书馆?与给定的参考添加到VBE你的代码运行良好为我。那么,你能详细说明一下吗?不运行并没有真正的帮助。你收到错误信息了吗?如果是这样的话,你能告诉我们你得到的错误吗?您是否能够在另一台安装了MS Word和MS Excel 2016的计算机/系统上尝试您的代码?也许您还可以分享一些系统见解,因为这似乎是一个非编程问题:Citrix设置?其他版本的Office共同安装,等等?你能给一个屏幕截图,你如何包括图书馆?