【问题标题】:VBA Can not insert objectVBA 无法插入对象
【发布时间】:2018-09-28 13:51:14
【问题描述】:

我在 Excel 中有一个进程,它使用以下代码从 PDF 文件添加图像:

valRef = "TabName"
FilePath = "\\network\file.pdf"
' Process stops in the next line
Worksheets(valRef).OLEObjects.Add Filename:=FilePath, Link:=False, DisplayAsIcon:=False

有时,添加 PDF 文件时进程会停止并显示错误“运行时错误 '1004”无法插入对象

当调试窗口出现时,我可以按 F5 并继续该过程。 PDF 文件存在且具有相同的文件,在相同的网络位置,有时可以不间断地工作。

关于如何防止进程停止的任何想法?

【问题讨论】:

  • 我会研究错误处理,您可以在其中重试添加对象。 cpearson.com/excel/errorhandling.htm
  • 问题是它不是一个真正的问题。该文件存在,我确实需要将其嵌入 Excel

标签: excel vba


【解决方案1】:

我知道它看起来很难看,但您可以继续使用错误处理程序重试

if 1 = 0 then 'never enter this section, unless an error occurs
  looperror:
  Resume 'without this, the second time an error occurs, it will trigger, ignoring the on error
end if

on error goto looperror
  Worksheets(valRef).OLEObjects.Add Filename:=FilePath, Link:=False, DisplayAsIcon:=False
on error goto 0

如果您不希望这种情况无休止地进行下去,您可以添加一个计数器并在尝试几次后取消,或者通过 msgbox 询问用户是否要重试。

【讨论】:

  • 这里的聪明才智令人钦佩,但我认为OP只是想跳过这行,如果它给他一个错误,而不是重试
  • 实际上,OP 评论了他自己的问题,说他坚持要插入 PDF,而不是跳过文件。此外,如果您正确阅读了该问题,您会看到他提到按 F5,这实际上会触发崩溃代码行的重试。
  • 谢谢@Rob,这就是我想要的。我发现问题出在网络连接上。如果我事先将文件复制到本地,则不会出现问题。
  • 也许 excel 的复制命令对网络不稳定更有弹性。如果是这种情况,请先将其复制到本地文件夹:stackoverflow.com/questions/16943003/…
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 2015-05-11
  • 2015-06-06
  • 1970-01-01
  • 2016-03-21
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多