2011-03-04 3 views
2

Windows XP에서 실행되는 Word 2003에서 작동하는 매크로가 있는데, 매크로는 normal.dot 템플릿에 있습니다. 관련 부분 아래에 있습니다. 병합 된 .rtf에서 실행되고 현재 문서를 복사하고, 새 문서를 열고, 사용자 정의 콤보의 일부 데이터와 함께 복사 된 내용을 붙여 넣고, 사용자 정의 명명 된 파일에 저장하고, 닫은 후 사용자를 다시 남겨 둡니다. 시작되었습니다. 그런 다음 저장된 문서를 FTP로 전송합니다. 그것은 예상대로 작동합니다.Word VBA, Word 2007 Win XP에서는 작동하지만 Word 2007에서는 작동하지 않는 이유는 무엇입니까?

ActiveDocument.Content.Copy 
Documents.Add 
ActiveDocument.Content.Paste 

'Add the data from the Userform 
Selection.Find.ClearFormatting 
Selection.Find.Replacement.ClearFormatting 
With Selection.Find 
.ClearFormatting 
.Text = "\<refDestination\>*\<End Synapse data\>" 
.Replacement.ClearFormatting 
.Forward = True 
.Format = False 
.MatchCase = False 
.MatchWholeWord = False 
.MatchWildcards = True 
.Replacement.Text = "<refDestination>" & ComboBox1 & "</refDestination>" & _ 
        "<refType>" & ComboBox2 & "</refType>" & _ 
        "<End Synapse data>" 
.Execute Replace:=wdReplaceAll, _ 
    Wrap:=wdFindContinue 
End With 


ActiveDocument.SaveAs savedName, wdFormatDocument 
ActiveDocument.Close ' Now go on to FTP savedName 

MsgBox "wait here" 

내가 승 7 및 Word 2007에 다른 사이트에서 같은 매크로를 실행하려고하고 이미 열려있는 내가 파일을 해제하지 않습니다 어떤 방식으로 activedocument.close에, savedName을 삭제할 수 없습니다 실패 , 프로세스가 중단됩니다. 작업 관리자를 사용하여 단어를 닫으려고하면 savedName에있는 파일로 이동하여 파일을 열면 올바른 데이터가 포함되어 닫히는 것처럼 보입니다.

+0

왜 작동하는 코드가 표시되지만 프로세스가 멈추는 부분 (ftp 부분)은 아닌가? –

+0

FTP 부분이 문제가 아니기 때문에. 내가 MsgBox를 마지막에 넣으면 savedName 파일을 삭제하려고 시도하면 파일이 잠긴 오류가 발생합니다. – Saul

+0

Windows 7에서 나는 그러한 효과를 보았습니다. 하지만 범인은 Word (또는 필자의 경우 Excel)가 아니었지만 파일 탐색기는 창의 오른쪽에 파일 미리보기가있었습니다. 파일이 거기에 표시됩니까? – Codo

답변

0

매크로가 Windows XP/Office 2003 플랫폼에서 작동하는 이유와 새로운 플랫폼에서 오류가 발생하는 이유를 설명 할 수 없습니다. 하지만 당신이 ActiveDocument 객체를 소스와 목적지라는 서로 다른 두 개의 문서에 사용하고있는 것을 볼 수 있습니다. 복사하는 동안 Word에서 임시 파일을 만듭니다 (MSDN의 this article 참조, "파일 사이에 붙여 넣은 텍스트"참조). 연결이 있는지 확실하지 않지만 두 개의 다른 개체 (예 :

Dim docSource as Word.Document 
Dim docDest as Word.Document 
Set docSource = ActiveDocument 
docSource.Content.Copy 
Set docDest = Documents.Add 
docDest.Content.Paste 
docSource.Close SaveChanges:=wdDoNotSaveChanges 
<continue with docDest> 
+0

좋은 생각과 감사하지만 그것은 문제를 해결하지 못했습니다. – Saul

관련 문제