【问题标题】:Excel VBA code that Copy/Pastes into a word document is causing my code to fail复制/粘贴到 Word 文档中的 Excel VBA 代码导致我的代码失败
【发布时间】:2021-06-06 21:28:09
【问题描述】:

我有一张 Excel 表格 这是生成一个word文档(然后被转换成PDF)

代码循环遍历各行数据,并根据数据在word中创建一个页面 循环的一部分从 Excel 中获取一个图表并将其粘贴到单词页面中。

代码一切正常,它以我想要的方式生成 word 文档。但是图表的复制/粘贴导致我出现间歇性问题。

奇怪的行为是: 1 - 我的代码在完成循环数据之前会突然退出。 2 - 我无法在中断模式下使用 F8 单步执行代码,一旦我到达执行粘贴的代码,代码就会运行所有内容。 3 - 如果我在粘贴后放一个断点,让代码停止并连续按f5,那么我不会让代码突然退出。

(抱歉,解释这么长)

这是我出现问题的代码的 sn-p

            IndividualChartSheet.ChartObjects("IndividualCompletionChart").Copy
            DoEvents
            objRange.PasteSpecial Link:=False, DataType:=wdPasteMetafilePicture, Placement:=wdWrapSquare, DisplayAsIcon:=False
            Application.CutCopyMode = False
            DoEvents
            
            Set myShape = objDoc.InlineShapes.Item(objDoc.InlineShapes.Count).ConvertToShape
            myShape.WrapFormat.Type = wdWrapBehind
            myShape.RelativeVerticalPosition = wdRelativeVerticalPositionPage
            myShape.Top = InchesToPoints(2)
            myShape.Left = InchesToPoints(-0.4)

objRange 是对我的 word 对象中的范围的引用。

我可以让代码运行,方法是在 Application.CutCopyMode = False 上放置一个断点,然后按 F5。但我希望将此工具传递给其他用户,因此我无需修复此问题。

经过一番搜索,我添加了 DoEvents 和 CutCopyMode = False。 我还尝试将粘贴命令移动到单独的函数中。 但这没有用。

【问题讨论】:

    标签: excel vba ms-word


    【解决方案1】:

    如果有人感兴趣,我最后会深入了解它。

    这么奇怪,我花了很长时间才弄明白。

    基本上,我构建 word 文档的部分代码也添加了超链接,因此查看我的最终输出(word 文档转换为 pdf 文件)的人可以在文档中跳转。

    我的超链接和书签是基于员工姓名的,而 word 不喜欢我在超链接/书签名称中包含非字母数字字符。一旦我删除了这些代码,现在就可以毫无问题地运行了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 2019-11-25
      • 2020-09-20
      相关资源
      最近更新 更多