2017-12-21 36 views
0

VBA를 통해 Visual Studio에서 Visio 드로잉을 내보내는 데 OrgChart 마법사를 사용하려고합니다.OrgChart 마법사로 VBA를 통해 Visio로 내보내는 중 오류가 발생했습니다.

'/PAGES=<top employee> <num levels> PAGENAME=<pagename>,<top employee> <num levels> PAGENAME=<pagename>... 
strPageConfig = " /PAGES=" & ListBox1.SelectedItem & " " & lvlNum & " PAGENAME=cleanedData" 

우리는 다음 visExcelFile라는 valiable에서 엑셀 파일을 저장 :

첫째, 우리는 사용하여 페이지의 구성 PARAMS을 설정합니다.

visApp = CreateObject("Visio.Application") 
visApp.visible = False 
objAddOn = visApp.Addons.ItemU("OrgCWiz") 
objAddOn.Run("/S-INIT") 

조직도 인수를 추가하고 실행 마법사 : 다음, 우리는 OrgChart를 마법사를 생성

orgWizArgs = " /FILENAME=" & visExcelFile & " /NAME-FIELD=Name" & 
     " /MANAGER-FIELD=Reports_To" & strPageConfig & 
     "/DISPLAY-FIELDS=Name, Title /SYNC-ACROSS-PAGES /HYPERLINK-ACROSS-PAGES" 

objAddOn.Run("/S-ARGSTR " + orgWizArgs) 
objAddOn.Run("/S-RUN") 
visApp.visible = True 

오류는 우리가 strPageConfig을 설정 라인에서 온다, 특히 때 이름을 ListBox1에서 읽습니다. 값이에 공백이있는 경우 (그들은 이름이기 때문에 2 ~ 3), I는 진술 각 단어에 대한 팝업창을 얻을 것이다 :

Employee name "Smith" is not in your organization data. 
Employee name "John" is not in your organization data. 

을 나는 없거나 것을 잊고 어떤 공간이를 유발하는 원인이 오류?

다른 문제를 일으키는 문제는 ListBox1에 직원 이름을로드 할 때 공백을 _로 대체하지만이 밑줄이 원하지 않는 도면에 표시된다는 것입니다.

내 질문은 : 공간을 포함하는 데이터로 VBA에서 조직도 마법사를 어떻게 실행합니까? 또는 : VBA를 통해 이러한 개체에 들어가서 ShapeData 텍스트 필드를 편집하려면 어떻게해야합니까?

비슷한 질문이 다른 사이트에 게시되었지만 답변이 없습니다. 나는 또한 그래서, Visio를 2013

답변

2

당신은 당신의 문자열을 인용 할 필요가 사용하고 있습니다 :

Public Function QuoteString(str as String) as String 

    Dim quotechar as String 
    quotechar = Chr(34) 

    QuoteString = quotechar & str & quotechar 

End Function 


strPageConfig = " /PAGES=" & QuoteString(ListBox1.SelectedItem) & " " & lvlNum & " PAGENAME=cleanedData" 
+0

YESSS !!!! 완벽하게 일했고, 많이 sososo 고마워! – johno

+0

환영합니다 : 3 –