之前沒做過word專案,對word里的VBA不是很熟悉,雖然學過VB,也早就還給老師了。
先說遇到的問題,給word里的表格批量按順序添加書簽,一開始用下面的代碼做,沒發現問題,等到了程式里用C#進行資料插入的時候,就出大問題了,因為書簽是按照整個格選取的,所以用C#做輸入插入的時候,等于是給整個格插入了資料,直接導致表格例外。
Sub TestAddMarket()
Dim num As Integer
num = 0
Dim MyBk As Bookmark
For Each MyBk In ActiveDocument.Bookmarks
MyBk.Delete
Next
For r = 3 To 15 Step 1
For c = 3 To 23 Step 1
Selection.Tables(1).Cell(r, c).Range.Bookmarks.Add("TextBox" & c + 1 + num * 21)
Next c
num = num + 1
Next r
End Sub
然后研究了半天,發現是Range是一個集合,需要在用VBA做插入的時候,進行游標定位,然后再插入。
下面是能達到要求的代碼,沒有做過多的精簡考慮,貼出來,供大家參考。
Sub TestAddMarket()
Dim num As Integer
num = 0
Dim MyBk As Bookmark
For Each MyBk In ActiveDocument.Bookmarks
MyBk.Delete
Next
For r = 7 To 8 Step 1
For c = 1 To 3 Step 1
Selection.Tables(1).Cell(r, c).Range.Bookmarks.Add ("TextBox" & c + 1 + num * 21)
Selection.GoTo What:=wdGoToBookmark, Name:=("TextBox" & c + 1 + num * 21)
ActiveDocument.Bookmarks(("TextBox" & c + 1 + num * 21)).Delete
Selection.EndKey
Selection.Bookmarks.Add ("TextBox" & c + 1 + num * 21), Selection.Range
Next c
num = num + 1
Next r
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/45291.html
標籤:VBA
上一篇:當運用變數時,程式無效,求教大神
