2013-09-23 4 views
1

MS Word에서 텍스트 상자의 이름을 지정하여 vba에서 호출하고 텍스트를 추가 할 수 있습니까? 예를 들어, 일부 데이터를 가져 오는 사용자 폼이 있습니다. 이 데이터에 대한 몇 가지 계산 user.after에서, 나는 Visual Basic에서 우리가 가진, 텍스트 상자 나 방정식 ... 처럼에서 문서에 대한 결과를 보여주고 싶은 : VBA를 사용하여 문서의 특정 텍스트 상자에 텍스트 추가

textbox1.text="My Text Goes Here"

우리가 뭔가를해야합니까 VBA에서? 좋아요 :

ActiveDocument.textboxname.text="My Text"? !!

나는 이것을 위해 activeX 컨트롤을 사용하고 싶지 않습니다.

답변

2

Word와 PowerPoint에서는 수식 입력 줄에서 Excel을 사용할 수있는 경우와 달리 VBA를 사용하여 셰이프에만 이름을 지정할 수 있습니다.

Word에서는 셰이프에 고유 한 이름을 지정하지 않으므로 두 모양 모두 Text Box 2을 사용할 수 있습니다. ActiveDocument.Shapes 컬렉션의 색인 위치를 통해 도형을 참조 할 수도 있습니다. 당신은 당신이 작업 할 필요 Shape 확인되면

, 당신은 단순히 .TextFrame.TextRange.Text 속성을 조작 할 수 있습니다 : 당신이 고려할 수

Sub Test() 
Dim shp As Shape 
Dim str As String 

For Each shp In ActiveDocument.Shapes 
    str = "My name is " & shp.Name 
    str = str & vbNewLine & "My EditID is " & shp.EditID 
    shp.TextFrame.TextRange.Text = str 
Next 
End Sub 

또 한가지는 각 모양에 AlternativeText 속성을 추가하고있다. 물론 이것은 "비 고유성"문제가 해결되지 않는,하지만 당신은 식별하고 차별화의 또 다른 수단으로, 일부 메타 데이터에 모양을 할당하려면이 (또는 CustomerData/CustomXMLParts를 사용할 수 있습니다.

1

을 몇 가지 가능성이 있습니다 CC를 활용할 수있는 방법은 제 생각에 가장 좋은 방법은 확인 된 각 단락을 참조로 감싸는 것입니다.

Dim par As Paragraph 

'set reference to appropriate paragraph 
Set par = ActiveDocument.Paragraphs(2) 

Dim cc As ContentControl 
Set cc = ActiveDocument.ContentControls.Add(_ 
      wdContentControlRichText, par.Range) 

cc.Tag = "VERIFIED" 

'options 
'disable deletion of CC 
cc.LockContentControl = True 

'disable edition of CC 
cc.LockContents = True 
관련 문제