初心者の質問については事前にお詫び申し上げます.VBAの経験の大部分はExcelまたはWord to Excelにあります。この場合、私はExcelからWordに行きます。私はいくつかのWordフォームからデータを取り込み、それをExcelファイルに保存しようとしています。 (!グー)Excel VBAでループ内の複数のWordファイルを開く
今、私のコードは、フォルダ内の最初のドキュメントのために動作しますが、その後、それがオートメーションエラーでアップホース「のサーバーが例外を投げた」
ここでは私のコードです:
Dim objWordApp As Object
strCurFileName = Dir(strFilePath)
Set objWordApp = CreateObject("word.application")
objWordApp.Visible = True
Do While strCurFileName <> ""
objWordApp.documents.Open strFilePath & strCurFileName
objWordApp.activedocument.Unprotect password:="testcode"
{EXCEL PROCESSING HERE}
strCurFileName = Dir
objWordApp.activedocument.Close 0
Loop
objWordApp.Quit
Set objWordApp = Nothing
私は、アプリケーションを終了し、ループ内でオブジェクト=何も設定しないとコードが正常に動作することに気付きました。しかし、今のように、それは "objWordApp.documents.Open strFilePath & strCurFileName"行のフォルダ内の2番目のファイルに爆発します。
オブジェクトを何度も作成しなくても、ループでWord文書を開いたり閉じたりできますか?私がそうすると、それは本当に遅いです。
私はあなたのやり方がはるかに良いです。残念ながら、私は同じ結果を得ます。
Set objWordDoc = objWordApp.Documents.Open(objFile.Path)
を私が手にエラーがある:
ファイル名を指定して実行時エラー-2147417851(80010105) オートメーションエラー サーバが投げたプログラムは、読み込みライン上のループを介して第2の時間を死にます例外。
私はあなたのコードを(私が処理しているものではなく)普通のワード文書で試してみましたが、うまくいきました。私が実行しているドキュメントには、フォームフィールドとマクロがあります。違いがあるかどうかはわかりません。 Wordのマクロセキュリティを「低」と「非常に高い」の両方に設定して、他のマクロが干渉しないようにしました。
私はそれがなぜ最初のdocのために働くのか理解できないのです。私は最初の文書をクローン化しましたが、違いはありませんでした。
まだ運がありませんが、私が働くことができる唯一のことは、オブジェクトを完全に拭き取り、ファイルを開くたびにそれらを再作成することです。
Set objFolder = FSO.GetFolder(strFilePath)
For Each objFile In objFolder.Files
Set objWordApp = CreateObject("word.application")
objWordApp.Visible = True
If Right(objFile.Name, 4) = ".doc" Then
Set objWordDoc = objWordApp.documents.Open(Filename:=objFile.Path, ConfirmConversions:=False, _
ReadOnly:=True, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto)
[Process DOC]
objWordDoc.Close 0, 1
End If
Set objWordDoc = Nothing
objWordApp.Quit
Set objWordApp = Nothing
Next
それが動作する理由は、私はわからないんだけど、なぜそれが他の方法では動作しません。私がこの道を進む必要があるならば、私はできます - それはちょうど本当に遅く、非効率的です。これは悪い考えですか?
「爆弾」とはどういう意味ですか?エラーメッセージ? – shahkalpesh