【问题标题】:type mismatch vba error类型不匹配 vba 错误
【发布时间】:2017-11-23 21:37:23
【问题描述】:

我正在尝试使用 VBA 替换电子表格上的链接,但遇到类型不匹配错误,无法找出原因。

我的代码:

    Dim aLinks as variant
    Dim myPath, name as String

aLinks = ActiveWorkbook.LinkSources
myPath = "C:\"
name = "test.xlsm"

    ActiveWorkbook.ChangeLink Name:=aLinks, NewName:=myPath & name, Type:=xlExcelLinks

有人知道原因吗?

【问题讨论】:

  • myPath 被隐式声明为变体。它应该是 Dim myPath As String, name As String
  • 不,不是,我只是在中间切掉所有内容,只显示我说出来的部分。我的路径、aLinks 和名称都在前面说明过
  • 很公平。我刚刚编辑了它。

标签: vba excel


【解决方案1】:
aLinks = ActiveWorkbook.LinkSources

它的类型是Variant() 数组。

ActiveWorkbook.ChangeLink Name:=aLinks, NewName:=myPath & name, Type:=xlExcelLinks

...您不能将数组强制转换为 String

您可能需要弄清楚该数组中的哪个项目包含您想要的名称。例如:

ActiveWorkbook.ChangeLink Name:=aLinks(1), NewName:=myPath & name, Type:=xlExcelLinks

【讨论】:

  • 数组中只有一个名字,因为只有一个链接。我尝试了将 aLinks 粘贴到单元格的相同代码,它工作正常。更改链接代码出错了
  • 这仍然为您提供了一个变体数组 - 其中包含一个项目。
  • 以及如何指定项目?
【解决方案2】:

aLinks 需要声明为字符串或强制转换为字符串Cstr(aLinks)。 Path 也应该被声明为一个字符串,但是因为你将它与一个字符串连接起来,它会被转换成一个字符串myPath & name

Workbook.ChangeLink Method (Excel)

Name 必需 String 要更改的 Microsoft Excel 或 DDE/OLE 链接的名称,因为它是从 LinkSources 方法返回的。 NewName 必需 String 链接的新名称。 Type 可选 XlLinkType 链接类型。

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 2017-04-12
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    相关资源
    最近更新 更多