簡體   English   中英

VBA MS Word內容控制混亂的順序

[英]VBA MS Word content controls messed order

我有一張約有15個內容控件的表。 內容控件具有不同的標題。

現在,我復制了幾次帶有內容控件的表,然后,將不同的值從數據庫中獲取到每個單獨的內容控件中。 由於來自不同表的內容控件使用相同的名稱,因此我想到了使用類似這樣的循環遍歷表的數量的方法

seqNo = 1 
For Each t in MyTables
    ActiveDocument.SelectContentControlsByTitle("title1").Item(seqNo).Range.Text = "some value 1 from DB"
    ActiveDocument.SelectContentControlsByTitle("title2").Item(seqNo).Range.Text = "some value 2 from DB"
    ' and so on
seqNo = seqNo + 1
Next

問題是當我使用此代碼時,我的內容控件未按順序填充。 我的意思是,例如,表1中標題為title1內容控件未填充其值,而是表4中標題為title1內容控件獲取了該值。 這種混亂真的很糟糕:表2中的值可能最終出現在表4、9、10中,依此類推。

我認為復制粘貼表格時,內容控件的順序有些混亂。

並提示如何正確處理?

並沒有真正發現為什么會發生這種情況,而是給內容控件賦予了唯一的名稱,例如title1title2等,然后遍歷所有控件以設置所需的值。

哦,天哪,是的...我也偶然發現了同樣令人討厭的問題。 我的解決方法是在復制后在代碼中更改標題,然后粘貼並更改該標題(請參見下文)。 現在我的問題是,由於我在代碼中填寫了許多這些模板,因此這需要很長時間才能運行。 目前,我對如何加快此過程或應該使用的其他方法不知所措。

objWord.ActiveDocument.Range(start:=objWord.ActiveDocument.Tables(3).Range.Rows(1).Range.start, End:=objWord.ActiveDocument.Tables(3).Range.Rows(5).Range.End).Copy
    objWord.Selection.EndKey Unit:=wdStory
    objDoc.SelectContentControlsByTitle("Date").Item(1).Title = "Date1"
    objDoc.SelectContentControlsByTitle("StartTime").Item(1).Title = "StartTime1"
    objDoc.SelectContentControlsByTitle("EndTime").Item(1).Title = "EndTime1"
    objDoc.SelectContentControlsByTitle("Mins").Item(1).Title = "Mins1"
    objDoc.SelectContentControlsByTitle("Note").Item(1).Title = "Note1"
    objDoc.SelectContentControlsByTitle("Grp").Item(1).Title = "Grp1"
    objDoc.SelectContentControlsByTitle("acc1").Item(1).Title = "acc1_1"
    objDoc.SelectContentControlsByTitle("acc2").Item(1).Title = "acc2_1"
    objDoc.SelectContentControlsByTitle("acc3").Item(1).Title = "acc3_1"
    objDoc.SelectContentControlsByTitle("acc4").Item(1).Title = "acc4_1"
    objDoc.SelectContentControlsByTitle("acc5").Item(1).Title = "acc5_1"
    objDoc.SelectContentControlsByTitle("acc6").Item(1).Title = "acc6_1"
    objDoc.SelectContentControlsByTitle("acc7").Item(1).Title = "acc7_1"
    objDoc.SelectContentControlsByTitle("acc8").Item(1).Title = "acc8_1"
    For j = 2 To UBound(Narray)
        objWord.Selection.Paste
        objDoc.SelectContentControlsByTitle("Date").Item(1).Title = "Date" & j
        objDoc.SelectContentControlsByTitle("StartTime").Item(1).Title = "StartTime" & j
        objDoc.SelectContentControlsByTitle("EndTime").Item(1).Title = "EndTime" & j
        objDoc.SelectContentControlsByTitle("Mins").Item(1).Title = "Mins" & j
        objDoc.SelectContentControlsByTitle("Note").Item(1).Title = "Note" & j
        objDoc.SelectContentControlsByTitle("Grp").Item(1).Title = "Grp" & j
        objDoc.SelectContentControlsByTitle("acc1").Item(1).Title = "acc1_" & j
        objDoc.SelectContentControlsByTitle("acc2").Item(1).Title = "acc2_" & j
        objDoc.SelectContentControlsByTitle("acc3").Item(1).Title = "acc3_" & j
        objDoc.SelectContentControlsByTitle("acc4").Item(1).Title = "acc4_" & j
        objDoc.SelectContentControlsByTitle("acc5").Item(1).Title = "acc5_" & j
        objDoc.SelectContentControlsByTitle("acc6").Item(1).Title = "acc6_" & j
        objDoc.SelectContentControlsByTitle("acc7").Item(1).Title = "acc7_" & j
        objDoc.SelectContentControlsByTitle("acc8").Item(1).Title = "acc8_" & j
    Next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM