2012-02-15 102 views
0

我做了一個mailmerge來創建客戶信息的動態詞彙頁面。如何提取/刪除每個頁面的第一個單詞?

然後我做了(通過尋找在網絡上)宏結果文件分成幾個頁面,每個頁面被保存爲一個文件。

現在我正在尋找給這些文件包含客戶信息的一些名字。我搜索了這個,我認爲(唯一的)方法是在頁面的開頭創建一個包含該信息的合併域,然後使用宏將其從頁面中提取並從文件名中刪除。

例如:如果我有一個名爲客戶#1我想有一個文件名爲Facture_Stackoverflow.doc。

我發現無處如何選擇,提取物,然後從我的頁面上刪除這個第一個字。

這裏是我的「分裂宏」,目前名稱的文件只是用遞增的ID:

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

下面的功能將使您能夠提取的第一個字(和有選擇地刪除它)的一句話文件。

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

嗨creamyegg。非常感謝您的回答。我在我的主循環中調用了你的函數,但不幸的是得到了執行錯誤4608:值超出範圍。調試器顯示「With .Range(0,intCharCount - 1)」行,你知道我做錯了什麼嗎?這是什麼意思,如果intCharCount的值爲0 ...?這可能是因爲我的頁面的標題? – user1211458 2012-02-15 17:06:00

+0

intCharCount應返回文檔中第一個空格字符的字符位置。我認爲intCharCount只會在文檔爲空時爲零,即沒有字母,單詞或空白。 – markblandford 2012-02-15 17:13:39

+0

可能是。我提供的函數只適用於代碼所在的文檔(ThisDocument)。再次查看問題中的代碼,嘗試更改我的函數以使用ActiveDocument而不是ThisDocument。 – markblandford 2012-02-15 17:21:45

相關問題