2016-07-22 82 views
0

目前,我正在構建一個由來自第三方的自定義字段填充實際數據的Word文檔。將字段與網址相結合

上填充文件的理線是如下:

  1. 從第三方程序生成的文件 - > 2. Word打開,我可以執行 我的VBA代碼 - > 3.文件再次關閉 - > 4.文件打開並且正在被填充來自第三方程序的數據的 - > 5.文件被導出到Outlook。

到目前爲止,這工作得很好,我可以模仿第三方使用VBA代碼的Word域。

現在我想使用一些這些數據來生成一個獨特的網址。該網址看起來如下:http://example.com?q1=field1&q2=field2(在這個例子中也是文檔中唯一的東西)。

我現在要做的是用實際必要的Word字段(動態地)替換'field1'或'field2'。這似乎並不適用於URL(可以正常工作)。代碼將在該過程的第二部分執行。

要用字段替換某些標記,我使用下面的代碼,我希望它也可以用於URL,但似乎並非如此。

item would have as input: 
item(0) = "field1" - tag name, 
item(1) = "Example" - First part of the field, 
item(2) = "<<contract_example>>" - Second part of the field 

Private Sub TranslateItem(item() As String) 
    Selection.HomeKey wdStory 
    Selection.find.Text = item(0) 
    Dim holder As Boolean 
    holder = True 
    Do While holder 
     Dim tempholder As Boolean 
     tempholder = Selection.find.Execute 
     If tempholder Then 
      Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:=item(1) & item(2), PreserveFormatting:=False 'add field 
     Else 
      holder = False 
     End If 
    Loop 
End Sub 

此代碼似乎並沒有更換URL的實際一部分,但只是文本。我遇到了這個(How to programmatically edit all hyperlinks in a Word document?)鏈接,關於如何編輯url,但我不知道如何搜索和替換標籤,並在該示例中添加一個字段。

回答

3

可以遍歷文檔中的所有超鏈接,然後根據你的需要修改它們的屬性:

Sub ModifyHyperlinks() 
    Dim link As Hyperlink 
    For Each link In ActiveDocument.Hyperlinks 
     link.Address = Replace(link.Address, "q1=", "q1=field1") 
     link.Address = Replace(link.Address, "q2=", "q2=field2") 
    Next 
End Sub 
+0

今天我固定它。每當這些字段被放入超鏈接時,我都會遇到問題,因爲它們不會生成值,所以我只能得到結果。所以我做了什麼來解決這個問題,就是在文檔中用字段構建超鏈接,然後當我將它複製到我的實際鏈接時,它工作正常。奇怪的是,它並不直接在田野裏。謝謝你! – usselite

+0

@usselite:只是說:即使你沒有在賞金到期前給予賞金,反正你也會失去代表。 –