OrgChart向导通过VBA导出到Visio时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OrgChart向导通过VBA导出到Visio时出错相关的知识,希望对你有一定的参考价值。

我正在尝试使用OrgChart向导通过VBA从Visual Studio导出Visio绘图。

首先,我们使用以下命令设置页面配置参数:

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

然后,我们将excel文件存储在名为visExcelFile的变量中。接下来,我们创建了OrgChart向导:

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

添加组织结构图参数并运行向导:

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中时,我们用_替换空格,但这些下划线显示在图形中,这是我们不想要的。

所以我的问题是:如何使用包含空格的数据从VBA运行OrgChart向导?或者:如何通过VBA进入这些对象并编辑ShapeData文本字段?

我在其他网站上看到了类似的问题,但没有回答。我也在使用Visio 2013

答案

你需要引用你的字符串,所以:

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"

以上是关于OrgChart向导通过VBA导出到Visio时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用 Access 2007 查询向导创建 SQL,仍然无法在 VBA 中运行

尝试使用 .SaveAs VBA 函数时出现方法错误

关于Visio的vba操作,遍历目录,对所有vsd文件操作,导入excel文件

VBA改变visio图形内控件内容和颜色

visio如何转换成word

在 visio vba 中打开一个文件对话框