Ошибка при экспорте мастера OrgChart в Visio через VBA
Я пытаюсь использовать Мастер OrgChart для экспорта чертежа Visio из Visual Studio через VBA.
Сначала мы настраиваем параметры конфигурации страницы, используя:
'/PAGES=<top employee> <num levels> PAGENAME=<pagename>,<top employee> <num levels> PAGENAME=<pagename>...
strPageConfig = " /PAGES=" & ListBox1.SelectedItem & " " & lvlNum & " PAGENAME=cleanedData"
Затем мы сохраняем файл Excel в надежном файле с именем visExcelFile. Затем мы создали OrgChart Wizard:
visApp = CreateObject("Visio.Application")
visApp.visible = False
objAddOn = visApp.Addons.ItemU("OrgCWiz")
objAddOn.Run("/S-INIT")
Добавьте Аргументы Org Chart и запустите Мастер:
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, потому что они являются именами) с указанием:
Employee name "Smith" is not in your organization data.
Employee name "John" is not in your organization data.
Что я пропустил или забыл, что вызывает пробелы, чтобы вызвать эту ошибку?
Обходной путь, который вызывает другую проблему, заключается в том, что когда мы загружаем имена сотрудников в ListBox1, мы заменяем пробелы на _, но эти подчеркивания отображаются на чертеже, что нам не нужно.
Итак, мой вопрос: как я могу запустить OrgChart Wizard из VBA с данными, которые содержат пробелы? или: Как я могу войти в эти объекты через VBA и редактировать текстовые поля ShapeData?
Я видел похожие вопросы, размещенные на других сайтах, но без ответа. Я также использую Visio 2013
1 ответ
Вам нужно процитировать ваши строки, так:
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"