2017-04-06 1 views
1

Ms Word 데이터베이스 필드는 데이터베이스 쿼리 결과를 Word 테이블에 삽입합니다.MS Access 및 VBA를 사용하여 Ms Word 문서의 (필드 코드 : 데이터베이스) 필드 업데이트

VBA를 사용하여 ms 단어로 표를 채우기 위해 이미 VBA MsAccess를 사용했습니다. & MsWord 책갈피는 데이터에서 템플릿을 유지 관리하기가 매우 어렵습니다. 나는 MSword가 데이터베이스 삽입 옵션을 가지고 있으며 msaccess에서 데이터를 실현하고 업데이트 중 예비 성형을 보존 할 수 있도록했습니다.

{DATABASE의 \ d를 "C : 내 데이터 소스 \가 World.odc을 테스트하려면 \"데이터베이스 명령을 사용하여 ODBC를 통해 내 Access 데이터베이스에서 쿼리 다음 데이터베이스 필드 코드 결과 \ C "Provider = MSDASQL.1; 보안 정보 유지 = True; 확장 속성 = \"DSN = MS Access 데이터베이스, DBQ = H : \ CIP BOOK \ CIP2.accdb; DefaultDir = H : \ CIP 책; DriverId = 25; FIL = MS 통로;가 MaxBufferSize = 2,048]의 PageTimeout = 5; \ "; 초기 카탈로그 H는 : \ CIP BOOK \ CIP2.accdb \"S "는 SELECT Description, TA, Entry Title, 012,326,qryTransactions ExtendedWordFill_test FROM WHERE ((Project_id = 'PCP13ZOOA06')) \ "리터"26 "의 \ B를"191 "\ H는 *의 MERGEFORMAT }

먼저 내 wdFieldDatabase이 필드 (인덱스)가, 인덱스 인덱스 번호 (Field 개체)입니다. 인덱스 번호는 선택 범위의 필드의 위치, 또는 문서

둘째 나는 Fields.Add 방법 (워드) 이 예는 필드 LISTNUM

Selection.Collapse Direction:=wdCollapseEnd 
ActiveDocument.Fields.Add Range:=Selection.Range, _ 
Type:=**wdFieldListNum**, Text:="\s 3" 

을 추가하면 찾을 수를 나타냅니다 내가 원하는 인덱스 VBA (필드 코드 : 데이터베이스 필드)의 코드를 VBA를 사용하여 업데이트하고 (Project_id = 'PCP13ZOOA06) 변경하십시오. 다른 대안은 VBA에서 코드를 사용하여 문서의 특정 범위, 위치에 필드 데이터베이스를 추가 할 수 있습니다. 나는 이것을 액세스로부터 관리하기를 원한다. 아이디어는 2oo 이상의 프로젝트를위한 비용 테이블로 상태 보고서를 만드는 것이다.

Field codes: Database field

답변

1

내가 지금 그것을 테스트 할 수는 없지만 것없는 당신을 위해이 작품 같은?

Option Explicit 

Public Sub UpdateDatabaseField() 
    Dim fldTarget As Field: Set fldTarget = ActiveDocument.Fields(1) ' TODO: Find your field based on your knowledge of your document 
    Dim strProjectIdNew As String: strProjectIdNew = "123456" ' TODO: Determine new project code 

    Dim strCodeOld As String: strCodeOld = fldTarget.Code.Text 
    Dim ixBegin As Long: ixBegin = InStr(1, strCodeOld, "Project_id") + Len("Project_id") 
    Dim ixEnd As Long: ixEnd = InStr(ixBegin, strCodeOld, ")") 
    Dim strCodeNew As String: strCodeNew = Left(strCodeOld, ixBegin) & "='" & strProjectIdNew & "'" & Mid(strCodeOld, ixEnd) 
    fldTarget.Code.Text = strCodeNew 
End Sub 

마지막 코드 :

Public Sub UpdateDatabaseField() 
Dim fldTarget As Field: Set fldTarget = ActiveDocument.Fields(1) ' TODO: Find your field based on your knowledge of your document 
Dim strProjectIdNew As String: strProjectIdNew = "PCP13ZOOA08" ' TODO: Determine new project code 

Dim strCodeOld As String: strCodeOld = fldTarget.Code.Text 
Dim ixBegin As Long: ixBegin = InStr(1, strCodeOld, "Project_id") + Len("Project_id") - 0 
Dim ixEnd As Long: ixEnd = InStr(ixBegin, strCodeOld, ")") 
Dim strCodeNew As String: strCodeNew = Left(strCodeOld, ixBegin) & "='" & strProjectIdNew & "'" & Mid(strCodeOld, ixEnd) 
fldTarget.Code.Text = strCodeNew 
ActiveDocument.Fields(1).Update 

최종 하위

+0

인가 일, 난 단지 ("PROJECT_ID")는 렌을 수정 - 1 렌 ("PROJECT_ID")로 - 0 –

관련 문제