2016-12-05 7 views
0

Я не совсем знаком с VBA вообще или работаю с Range. Я хотел бы добавить флажок после строки текста, но следующий код выводит все флажки в самом конце документа. Я думаю, что параметр диапазона при установке флажка должен быть исправлен, но я не знаю, как его идентифицировать.Word-VBA: checkbox range

'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 

Это будет альтернатива, если вы не добавите флажок в конце строки.