초보자 질문에 대해 미리 사과드립니다. VBA 환경의 대부분은 Excel 또는 Word에서 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
나는 앱을 종료하고 루프 내에 object = nothing을 설정하면 코드가 제대로 작동한다는 것을 알게되었습니다. 하지만 이제는 "objWordApp.documents.Open strFilePath & strCurFileName"줄에있는 폴더의 두 번째 파일에서 폭탄을 터뜨립니다.
개체를 반복해서 만들지 않고 루프에서 Word 문서를 열고 닫을 수 있습니까? 그렇게 할 때 정말 느립니다.
도움을 주셔서 감사합니다. 불행히도, 나는 같은 결과를 얻는다. 이 프로그램은 읽어 줄의 루프를 통해 두 번째 다이 :
Set objWordDoc = objWordApp.Documents.Open(objFile.Path)
내가 오류는 다음과 같습니다
런타임 오류 -2147417851 (80010105) 자동화 오류 서버 던진
예외.나는 정규식 워드 프로세서 (처리중인 코드가 아닙니다)에 코드를 시험해 보았는데 정상적으로 작동했습니다. 실행중인 문서에는 양식 필드와 매크로가 있습니다. 차이가 있는지 여부는 확실하지 않습니다. Word의 매크로 보안을 "낮음"과 "매우 높음"으로 설정하여 다른 매크로가 간섭하지 않도록했습니다.
왜 첫 번째 문서에서는 작동하는지, 다음 문서에서는 작동하지 않는지 알 수 없습니다. 나는 심지어 첫 번째 문서를 복제했지만 아무런 차이가 없었다.
그래도 운이 없다. 내가 작업 할 수있는 유일한 방법은 파일을 열 때마다 개체를 완전히 지우고 다시 만듭니다.
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