2012-08-16 32 views
8

Summary:我的公司向客戶發送信函,並希望我寫一個宏以填寫已設置的不同文本表單字段word文檔,因爲發送出去的不同字母之間的事物變化非常有限。我在Excel中完成了宏,但這是我第一次遇到ms字宏填寫表格ms-word VBA /通過Word進行最有效的智能導航

問題:我很難通過ms-word找到有效的智能導航。我沒有找到這篇文章,關於moving in different directions 這是真的和箭頭鍵相同。希望深入瞭解導航Word文檔的最佳方式。例如,我應該做一個循環移動到右邊的空間,直到找到有意義的東西或者是否有更有效的方式?

問題:是否可以在一個變量中存儲一個特定的表單位置或者ms-word沒有座標系?

在此先感謝!

+3

+ 1對於一個很好解釋的問題。總之,您可以使用'.Find'或'For loops'或'GoTo'來瀏覽文檔。如果你有表單字段,那麼你根本不需要循環。我很好奇你爲什麼要將位置存儲在一個變量中?您可以直接使用名稱來處理內容控件。 – 2012-08-16 14:04:34

+0

@SiddharthRout我想我可以通過名稱來引用組件,但不確定此語法。然而,我對將座標存儲在變量中的好奇心並不一定與此問題完全相關,儘管它可能有所幫助 – 2012-08-16 14:08:51

+1

以下是一個非常基本的示例:http:// stackoverflow。com/questions/10823874/with-a-word-contentcontrol-datepicker-how-do-i-get-the-value/10824117#10824117 – 2012-08-16 14:17:01

回答

5

最近的Windows版本的Word中至少有三種類型的表單字段 - 內容控制,「傳統表單字段」和ActiveX表單字段。假設您正在處理舊版表單字段,您應該能夠使用書籤名稱對FormFields集合進行索引,然後使用

ActiveDocument.FormFields("Text1").Result = "mytextformfieldresult" 

ActiveDocument.FormFields("DropDown1").Result = "mydropdownformfieldresult" 

ActiveDocument.FormFields("Check1").Checkbox.Value = True 
+0

簡單,做了我想要的。 – 2012-08-16 17:06:18

2

您應該可以在需要轉到的文檔的各個位置創建書籤。在現代Word中,這在「插入」選項卡的「鏈接」組中。然後你可以從VBA訪問書籤,並插入文本到他們這種代碼:

ActiveDocument.Bookmarks("myBookmark").Range.InsertBefore "Inserted Text" 

MVP site對技術的更多數據。此外,MSDN還有一些關於書籤對象的數據。

+0

這真的很有幫助。其他人用這個表單字段和每個表單字段都在text1,text2,text3 ...等下面列出了書籤,我將嘗試引用這些書籤(或者可能是按照Siddharth的說法命名的控件)。我會讓你知道我想出了什麼。謝謝dsolimano – 2012-08-16 14:14:32

7

要使用內容控件,您必須確保已設置控件的Title。如果需要,您也可以設置Tag。請參見快照

enter image description here

然後你就可以使用此代碼更新內容控制或檢索它的值

Sub Sample() 
    Dim cc As ContentControl 

    For Each cc In ActiveDocument.ContentControls 
     If cc.Title = "MyTextBox1" Then 
      cc.Range.Text = "Hello World!" 
      Exit For 
     End If 
    Next cc 
End Sub 

當您運行的代碼,這是它的外觀

enter image description here

要獲取控件的文本,您可以使用Debug.Print cc.Range.text

+0

感謝您的幫助和努力,很好的例子 – 2012-08-16 17:06:44

+0

我現在實際上使用了這個代碼,因爲我得到了一個使用內容控件而不是表單域的不同的信件文檔。感謝:p – 2012-09-14 19:17:10