2016-04-25 16 views
1

このマクロが関連するフィールドから検索および置換するテキストを含むdocxテンプレートに基づいて、Excelファイルの各行を新しいpdfファイルにepxortしようとしています。優れたシートにExcel-VBA Find.replace with loopが正しく動作しない

問題はコードが最初のループで正しく機能することです。最初のループの後、1.pdfファイルがexcelの正しいフィールドでエクスポートされますが、テンプレートdocxファイルがExcelのデータとともに保存され、結果として後のループが正しく機能しなくなります。何らかの理由で、次の行のすべてのExcelフィールドがすべてテンプレートの先頭に追加されます。

このコードを修正して、ループが正しく実行されるようにしてください。欲望の結果は、Excelの各行は新しいpdfファイルにのみエクスポートされ、テンプレートdocxはそのまま保持されます。

ありがとうございました。代わりにtest.docx用ワードテンプレートtest.dotxの

Sub ReplaceText() 
    Dim wApp As Word.Application 
    Dim wDoc As Word.Document 
    Dim z As Integer 
    Set wApp = CreateObject("Word.Application") 
    wApp.Visible = True 
    For z = 3 To 6 

    Set wDoc = wApp.Documents.Open("D:\test.docx") 

With wDoc 
.Application.Selection.Find.Text = "TIEU_DE" 
.Application.Selection.Find.Execute 
.Application.Selection = Range("B" & z) 
.Application.Selection.EndOf 

.Application.Selection.Find.Text = "ENGLISH" 
.Application.Selection.Find.Execute 
.Application.Selection = Range("C" & z) 
.Application.Selection.EndOf 

.Application.Selection.Find.Text = "tenTG" 
.Application.Selection.Find.Execute 
.Application.Selection = Range("D" & z) 
.Application.Selection.EndOf 

.Application.Selection.Find.Text = "Noidung" 
.Application.Selection.Find.Execute 
.Application.Selection = Range("E" & z) 
.Application.Selection.EndOf 

.SaveAs2 "D:\test.pdf", 17 

.Close SaveChanges = False 

    End With 
    Next z 

End Sub 
+0

私の問題は次のように解決されています。まず、 ".Close SaveChanges:= False"を使用します。第2に、 "docx"の代わりに "dotx as"テンプレートファイル形式を使用する –

答えて

0
を追加するよりも、後のようなものをpdfファイルの使用を節約するために

.Close SaveChanges = Falseは私にコンパイルエラーを与えます(変数は定義されていません)

.Close SaveChanges := False私のために働き、変更を保存しません。

次の反復でドキュメントの先頭にすべてがコピーされるのは、find.executeメソッドが選択範囲を移動しないため(何も見つからないため)、カーソルはドキュメントの先頭にとどまりますが、まだ細胞をコピーします。

+0

ありがとうございます。追加.Close SaveChanges:= Falseが動作するように、私は ":"が不足していることを認識しませんでした。 –

0

(それを作成)

 .ExportAsFixedFormat OutputFileName:="D:\test" & z & ".pdf", ExportFormat:= _ 
wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _ 
Item:=wdExportDocumentContent, IncludeDocProps:=True 

そして

wDoc.Close saveChanges:=False 
Set wDoc = Nothing 
+0

これはとても良いアイデアです。 test.dotxを使用すると、コードが実行されるたびに新しい文書が作成され、テンプレートの編集を防ぐことができます。どうもありがとう。 –

関連する問題