2009-08-21 4 views
3

나는 친구를 위해 vb.net 응용 프로그램을 편집 중이며 요구 사항 중 일부는 한 단어 문서에서 다른 단어 문서로 병합 필드를 복사하는 것입니다. 나는 그들을 document.content.text를 사용하여 복사 할 수 있지만 텍스트로 나옵니다.복사 병합 필드 한 단어 문서에서 다른 VB 문서로

Dim tDocFields As Microsoft.Office.Interop.Word.Fields 
tDocFields = tDocument.Content.Fields 

내가 그때로 복사 할 문서를 활성화하고 있는데 난 후 관련 단어 응용 프로그램을 사용하여 해당 문서에 복사 할 필요가 있다고 생각 :

나는 내가 그들에 의해 선택된있어 것 같아요.

vDocument.Activate() 
vWord.Selection. ??? Insert() ??? 

모든 포인터가 크게 감사하겠습니다. 올바른 라인에 있습니까?

+0

비슷한 문제를 해결해야합니다. 해결책을 찾았습니까? 그렇다면 여기에 게시 할 수 있습니까? –

답변

0

Fields 컬렉션을 통해 사용 가능한 필드에 액세스 할 수 있지만 필드를 병합하는 것만이 아닌 모든 필드가 있습니다. 병합 필드를 쉽게 식별 할 수 있지만 필드 이름을 추출하려면 몇 가지 기본 구문 분석을 수행해야합니다. 당신이 병합 필드의 각을 발견하면

Dim lo_field As Field 
Dim lo_range As Range 
Dim lo_fieldText As String 

For Each lo_field In mo_doc.Fields 
    If lo_field.Type = WdFieldType.wdFieldMergeField Then 

     lo_range = lo_field.Code() 

     lo_fieldText = lo_range.Text 
     MsgBox(lo_fieldText) 

    End If 
Next 

당신과 같이 새 문서에서 새 병합 필드를 만들 수 있습니다 :

를 다음 코드는 각각의 내용과 메시지 박스가 문서에 병합 필드 표시
Imports Microsoft.Office.Interop.Word 

Public Class Form1 

    Dim mo_doc As Document 
    Dim mo_missing As Object = System.Reflection.Missing.Value 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     ' Open word 
     Dim lo_word As New Application 
     lo_word.Visible = True 

     ' Create a new word document 
     mo_doc = lo_word.Documents.Add(mo_missing, mo_missing, mo_missing, mo_missing) 
     mo_doc.Activate() 

     ' Add a merge field 
     mo_doc.Fields.Add(lo_word.Selection.Range, WdFieldType.wdFieldMergeField, "mergefieldname", True) 

    End Sub 
End Class 

희망이 도움이됩니다.

+0

VB.NET은 명명 된 매개 변수와 선택적 매개 변수를 가지고 있으므로 Word의 개체 모델로 작업 할 때 mo_missing 개체가 필요하지 않습니다! – CoderDennis

+0

이것은 필드를 복사하지만 서식은 복사하지 않습니다. 필드 주변에서 형식을 지정하는 방법이 있습니까? 지금까지 내가 찾은 유일한 방법은 느리고 느린 클립 보드를 복사하여 붙여 넣는 것입니다. 나는 targetApp.Selection.FormattedText = sourceRange.Code.FormattedText를 설정하려고 시도했다. 그러나 그것들은 런타임에 나를 위해 호환되지 않는 타입이다. – Shavais

관련 문제