0

請求書データの Microsoft Excel テーブルを変換し、差し込み印刷テンプレートに入力したいのですが、結合したら、各請求書を分割して PDF として保存する必要があります。

以下のコードは私が望むことを行いますが、それらを1、2、3などとして保存します。使用したい名前は、ドキュメントにある請求書番号です(ヘッダーを除く各ページの最初の8文字)。

これは私のコードが今のように見えるものです:

 Sub BreakOnPage()
     Selection.HomeKey Unit:=wdStory
     ' Used to set criteria for moving through the document by page.
     Application.Browser.Target = wdBrowsePage

     For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")

     'Select and copy the text to the clipboard.
     ActiveDocument.Bookmarks("\page").Range.Copy

     ' Open new document to paste the content of the clipboard into.
     Documents.Add
     Selection.Paste
     ' Removes the break that is copied at the end of the page, if any.
     Selection.TypeBackspace
     Selection.HomeKey Unit:=wdStory
     Selection.EndKey Unit:=wdStory
     Selection.TypeBackspace
     Selection.Delete Unit:=wdWord, Count:=1
     Selection.Delete Unit:=wdCharacter, Count:=1

     Dim strInvoiceNumber As String
     Selection.HomeKey Unit:=wdStory
     With Selection.Find
     .ClearFormatting
     Text:="^#^#^#^#^#^#^#^#"
     .Forward = True
     .MatchWildcards = False
     .Execute
     End With

     ' Defines the DocNum

     strInvoiceNumber = Selection.Text


     ' Exports the document to a pdf file and saves in sequence starting at 1 and closes the word document without saving

     ActiveDocument.ExportAsFixedFormat OutputFileName:= _
     "C:\Users\MLock\Documents\MacrosDocs\" & strInvoiceNumber & ".pdf", ExportFormat:= _
     wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
     wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
     Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
     CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
     BitmapMissingFonts:=True, UseISO19005_1:=False


     ActiveDocument.Close savechanges:=wdDoNotSaveChanges

     ' Move the selection to the next page in the document.
     Application.Browser.Next
     Next i
     ' ActiveDocument.Close savechanges:=wdDoNotSaveChanges
 End Sub

ここで PDF ドキュメントの名前を設定するにはどうすればよいですか?

4

1 に答える 1

2

そのため、ページで請求書番号を見つけて変数に割り当てる必要があります。これを使用して docnum を置き換えることができます。

検索を行う 2 つの方法は、Selection.Find を使用し、検索を実行してから、変数を Selection.Text に割り当てることです。それはおそらく最も簡単でしょう。

正規表現を使用して、後方参照で最初の 8 文字をキャプチャし、それを使用することもできます。

あなたの専門知識のレベルがわからない場合でも、必要に応じてこれらの点を明確にすることができます。

これは、あなたがやろうとしていることを達成するためのコードです。Selection.HomeKey Unit:wdStory は、請求書番号を含むドキュメントを参照していると思います。

Sub BreakOnPage()
    Dim strInvoiceNumber as String
    Selection.HomeKey Unit:=wdStory
    With Selection.Find
        .ClearFormatting
        .Text:="^#^#^#^#^#^#^#^#"
        .Forward = True
        .MatchWildcards = False
        .Execute
    End With

これで、8 桁の請求書番号が選択されます。次のように、変数 strInvoiceNumber を Selection.Text に割り当てます。

strInvoiceNumber = Selection.Text

次に、DocNum の代わりに、ExportAsFixedFormat ステートメントで strInvoiceNumber を使用します。

幸運を。

于 2012-10-18T12:34:31.460 に答える