繁体   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