2016-12-05 99 views
0

我对VBA一般不熟悉或者使用Range。我想在一行文本之后添加一个复选框,但以下代码输出文档最后的所有复选框。我认为在设置复选框的范围参数需要固定,但我不知道如何识别它。Word-VBA:复选框范围

'http://wordribbon.tips.net/T010727_Inserting_Multiple_Graphics_in_a_Document.html 
Sub GenerateLab() 
Dim sPic As String 
Dim sPath As String 

sPath = "C:\Users\lab\Documents\PDF Gen 12-1\TestImages\" 
sPic = Dir(sPath & "*.png") 

Do While sPic <> "" 
    Selection.TypeText ("Is this an ***?") 
    Selection.TypeParagraph 
    Selection.TypeText ("***") 
    Dim objCC As ContentControl 
    Set objCC = ActiveDocument.ContentControls _ 
     .Add(wdContentControlCheckBox) 
    Selection.TypeParagraph 
    Selection.TypeText ("Not ***") 
    Dim objCC2 As ContentControl 
    Set objCC2 = ActiveDocument.ContentControls _ 
     .Add(wdContentControlCheckBox) 
    Selection.InlineShapes.AddPicture _ 
     FileName:=sPath & sPic, _ 
     LinkToFile:=False, SaveWithDocument:=True 
    sPic = Dir 
    Selection.InsertBreak (7) 
Loop 
End Sub 

回答

0

问题不是该复选框在文档的结束时加入,但是,它的当前的选择/插入点(这是一样的文件的结束)之后加入。然后,其他所有内容都将添加到包装箱前,并保留在最后。短的修复将是通过将线

Selection.EndKey wdLine 

Selection.EndKey wdStory 

.Add后立即将光标移动到所述线(或文件)的末尾。

另一种可能性是3个字符将光标移动到右侧:

Selection.Move Unit:=wdCharacter, Count:=3 

这将是一个选择,如果你没有在一行的末尾添加复选框。