12

Excel VBA を使用して Word ドキュメントを保存しようとしていますが、エラーが発生します

「ActiveX コンポーネントはオブジェクトを作成できません。」

デバッグすると、次の行からエラーが発生します: Set wrdApps = CreateObject("Word.Application").

それは機能していましたが、このエラーが発生し始めました。

Sub saveDoc()

Dim i As Integer
For i = 1 To 2661:
    Dim fname As String
    Dim fpath As String

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    fname = ThisWorkbook.Worksheets(3).Range("H" & i).Value
    fpath = ThisWorkbook.Worksheets(3).Range("G" & i).Value

    Dim wrdApps As Object
    Dim wrdDoc As Object

    Set wrdApps = CreateObject("Word.Application")

    'the next line copies the active document- the ActiveDocument.FullName 
    ' is important otherwise it will just create a blank document
    wrdApps.documents.Add wrdDoc.FullName

    Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)
    ' do not need the Activate, it will be Activate
    wrdApps.Visible = False  

    ' the next line saves the copy to your location and name
    wrdDoc.SaveAs "I:\Yun\RTEMP DOC & PDF\" & fname

    'next line closes the copy leaving you with the original document
    wrdDoc.Close

    On Error GoTo NextSheet:
NextSheet:
    Resume NextSheet2
NextSheet2:
Next i

With Application
   .DisplayAlerts = True
   .ScreenUpdating = True
   .EnableEvents = True
End With

End Sub
4

7 に答える 7

2

Windows 7 から 10 にアップグレードするときに、大量の VBA スクリプトを持ち込むときに問題が発生しました。エラーの根本的な原因が何であるかはまだわかりませんが、その間、このコードはうまくいきました。これは、Word (または Outlook/Excel) を既に (手動で) 開いた状態にする必要性を制限する回避策ですが、参照が設定されている場合はスクリプトを実行できるようにする必要があります。に変更"CreateObject("するだけ"GetObject(, "です。これにより、すでに開いているウィンドウを使用するようにシステムに指示されます。

使用する完全なコードは次のようになります。

Dim wrdApps As Object
Dim wrdDoc As Object
Set wrdApps = GetObject(, "Word.Application")
于 2018-07-11T23:28:29.307 に答える
1

wrdDoc は初期化されていますか? オブジェクトが設定される前に wrdDoc を使用しようとしていますか?

wrdApps.documents.Add wrdDoc.FullName
Set wrdDoc = wrdApps.documents.Open(ThisWorkbook.Worksheets(3).Range("f" & i).Value)

最初の行は、コメントのように ActiveDocument.FullName にする必要がありますか? そう:

wrdApps.documents.Add ActiveDocument.FullName
于 2013-09-30T09:53:05.667 に答える