2017-11-20 7 views
1

Xero 용 템플릿 인보이스를 작성하려고합니다. Xero는 MS Word 템플릿의 특정 필드를 찾고 주어진 서식으로 텍스트 필드 이름에 할당 된 변수를 입력합니다. 한마디로 당신은 필드 코드처럼 필드 이름을 볼 수 전환 할 수 있습니다 :ms 단어 매크로를 사용하여 텍스트 필드의 일부를 선택하는 방법

«InvoiceNumber» 

또는 형식 이름 :

{ MERGEFIELD InvoiceNumber \* MERGEFORMAT} 

이 출력 성공적으로 템플릿에 INV1234. 이제 내가해야 할 일은 마지막 4 문자 만 출력하는 것입니다.

This post은 VBA를 사용해야 함을 의미하는 것으로 보입니다. 나는 단어에 Visual Basic의와 함께 매크로를 넣고이 내가 공격 한 문제입니다 :

Sub InvoiceNumber() 
    Dim MyInv As FormFields 
     Set MyInv = ActiveDocument.FormFields 
     If MyInv("Text1").Result = "InvoiceNumber" Then 
      MyInv("Text1").CheckBox.Value = Right(MyInv("Text1"), 4) 
     End If 
End Sub 

오류 5941로 반환 선택의 요청 멤버하지 않습니다 존재하지 않습니다.

저는 VB 매크로를 사용하는 초보자입니다. 무엇이 잘못 되었습니까? InvoiceNumber Fiel을 어떻게 호출해야합니까? 디?

답변

2

다음과 같은 솔루션을 시도해보십시오 :

Sub InvoiceNumber() 
     Dim MyInv As Field 
     Set MyInv = GetFieldByName("InvoiceNumber") 

     If Not MyInv Is Nothing Then 
      'do something with field result... 
      'here... debug to Immediate window 
      Debug.Print Right(MyInv.Result, 4) 
     End If 
End Sub 

Function GetFieldByName(fName As String) As Field 

    Dim F As Field 
    For Each F In ActiveDocument.Fields 
     'if not working try with (1) istead of (2) in line below 
     If Split(Replace(F.Code, " ", " "), " ")(2) = fName Then 
      Set GetFieldByName = F 
      Exit Function 
     End If 
    Next F 
    Set GetFieldByName = Nothing 
End Function 
+1

아니라 매크로 작품, 내 오류를 해결하고 일반적으로 그것이 내가 요구하고 정확하게 출력, 불행히도와 통신하지 않는 Xero에 템플릿 리더를 밝혀 것이다 그것 .. 그래서 나는 이것을 달성하기 위해 (아마도 Xero API에서) 또 다른 방법을 찾아야 할 것이다. –