2012-02-15 14 views
0

私は、顧客情報を含む動的な単語ページを作成するためにメールを作成しました。各ページの最初の単語の抽出/削除方法は?

次に、結果ファイルを複数のページに分割するマクロを1つのファイルとして保存するマクロを探しました。

私はこれらのファイルに顧客情報を含む名前を付けることを検討しています。私はそれをgoogledと私は(と?)方法は、ページの冒頭に、その情報を持つマージフィールドを作成し、抽出し、ファイル名に入れるために、マクロを持つページから削除することだと思います。

例:Stackoverflowという名前の顧客がいる場合は、Facture_Stackoverflow.docという名前のファイルが必要です。

私のページからこの最初の単語を選択し、抽出して削除する方法はありませんでした。単語の

Sub DecouperDocument() 
    Application.Browser.Target = wdBrowsePage 

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

     ActiveDocument.Bookmarks("\page").Range.Copy 

     Documents.Add 
     Selection.Paste 

     Selection.TypeBackspace 
     ChangeFileOpenDirectory "C:\test\" 
     DocNum = DocNum + 1 
     ActiveDocument.SaveAs FileName:="Facture_" & DocNum & ".doc" 
     ActiveDocument.Close 

     Application.Browser.Next 
    Next i 
    ActiveDocument.Close savechanges:=wdDoNotSaveChanges 
End Sub 

答えて

0

以下の関数は最初の単語を抽出し(必要に応じてそれを削除)することができます:ここでは

だけインクリメントIDと、現在その名前のファイル、私の「分割マクロ」であります資料。

Public Function GetFirstWord(Optional blnRemove As Boolean = True) As String 

    Dim rng As Range 
    Dim intCharCount As Integer 
    Dim strWord As String 

    With ThisDocument 
     Set rng = .Characters(1) 

     intCharCount = rng.EndOf(wdWord, wdMove) 

     With .Range(0, intCharCount - 1) 
      strWord = .Text 
      If blnRemove Then 
       .Delete 
      End If 
     End With 
    End With 

    GetFirstWord = strWord 

End Function 

これが役立ちます。

+0

ハイクリーム色。あなたの答えをありがとう。私はメインループであなたの関数を呼び出しましたが、残念ながら実行エラーが4608でした:値が範囲外です。デバッガは "With .Range(0、intCharCount - 1)"という行を表示しています。 intCharCountの値が0の場合はどういう意味ですか?それは私のページのヘッダーのせいかもしれませんか? – user1211458

+0

intCharCountは、ドキュメント内の最初の空白文字の文字位置を返す必要があります。私はintCharCountは、文書が空の場合、つまり文字、単語または空白がない場合にのみ0になると思います。 – markblandford

+0

かもしれません。私が提供した関数は、コードが存在するドキュメント(ThisDocument)でのみ動作します。あなたの質問のコードをもう一度見て、ThisDocumentではなくActiveDocumentを使用するように関数を変更してみてください。 – markblandford

関連する問題