2010-06-07 28 views
4

沒有人有VBA代碼創建書籤到MSWord表的第一列嗎?在MSWord表的第一列創建書籤

比方說,我有一個表看起來像這樣

.-----.----------------. 
. ref . Title   . 
.-----.----------------. 
. 1 . Title 1  . 
.-----.----------------. 
. 2 . Title 2  . 
.-----.----------------. 
. foo . Title 3  . 
.-----.----------------. 
. bar . Title 4  . 
.-----.----------------. 

,我想,在2行/列1,和書籤創建一個名爲「T1_1」的字符串「1」書籤中的VBA代碼段在列1的其他單元格中的字符串上命名爲「T1_2」,「T1_foo」和「T1_bar」。

我不介意硬編碼前綴「T1」(並且每次都替換其他表)。我不介意在運行宏之前選擇表格,我不介意給這些單元格一種特殊的格式,我不介意從第一行中得到一個多餘的書籤「T1_ref」 - 所以代碼不會需要區分表格標題和表格行。

感謝很多提前

回答

4
Public Sub Testing() 
    Dim strText As String 
    Dim i As Integer, j as Integer 
    For j = 1 To ThisDocument.Tables.Count 
     For i = 2 To ThisDocument.Tables(j).Rows.Count 
      strText = StripNonPrint(ThisDocument.Tables(j).Cell(i, 1).Range) 
      ActiveDocument.Bookmarks.Add Range:=ThisDocument.Tables(j).Cell(i, 1).Range, Name:="T1_" & strText 
     Next i 
    Next j 
End Sub 

Private Function StripNonPrint(ByVal s As String) 
    StripNonPrint = Trim(Replace(s, vbCr & Chr(7), "")) 
End Function 

這應該足以讓你去上你的任務。這將爲當前文檔中任何表格的第一列(第一行除外)中的每個單元格添加書籤。

+0

+1。好答案! – 2010-06-07 18:54:14

+0

很酷的感謝...只需稍作調整:添加j變暗,在所有「for ...」循環語句中將「j」替換爲「1」並改進strip函數,將「for j = 0」到「爲j = 1」 - 就是這樣......再次感謝 – MikeD 2010-06-07 19:08:42