通过 excel 处理 ppt 中的 OLE 对象有时会返回运行时错误 430

乐趣

我有一个 Excel 工作簿,它在 ppt 中创建了一个摘要。它主要由我无法再联系的其他人编码。因此,我希望你们能帮助我。它基本上创建了 3 种不同类型的幻灯片,每种幻灯片 5 次。最后一种类型(从现在起 type_3)正在产生问题。它基本上从名为“powerpoint feeder”的工作表中获取一系列单元格,并将该范围作为OLE对象复制到powerpoint幻灯片。之后,我需要清理那里的一些细胞。使某些其他单元格中的文本溢出(= 可读),因为由于这些幻灯片上的空间有限,我无法调整列宽。现在,有时运行代码会为我提供运行时错误 430:“类不支持自动化或不支持预期接口”。调试器将我定向到以下代码中标记的特定行。错误不会发生,如果我打开excel,输入我的数据,然后运行它(没有其他powerpoint和excel打开)。如果我之后再次运行它,它会产生上述错误。关闭所有 Excel 和 powerpoint,然后重新打开 excel,然后再次运行代码将起作用。我假设,我没有正确处理 OLE 对象,因为我以前从未使用过它。

额外问题:我似乎在我的 5 张 Type_3 幻灯片的 OLE 对象中插入了整个 excel,使我的 20 张幻灯片 ppt 超过 8 MB(1 Excel = 大约 1.6 MB)。我不一定需要所有这些。但是,稍后可以对 PowerPoint 中的表格进行调整(但不一定在 excel/整个工作簿中),这一点很重要。

帮助将不胜感激!我希望,我说清楚了我的观点。

Sub Type_3(i_Anchor As Range, i_Title As String, index As Integer)
Dim rng As Range, cel As Range    


ActiveWorkbook.Sheets("Powerpoint feeder").Activate
Set rng = i_Anchor
num_columns = 8

With Sheets("Powerpoint feeder")     'Determine range
    test_cell = rng.Value
    i = 1
    Do While test_cell <> ""
        i = i + 1
        test_cell = .Cells(rng.Row + i, rng.Column)
    Loop

    num_rows = i - 1

    .Range(.Cells(rng.Row, rng.Column), .Cells(rng.Row + num_rows - 1, rng.Column + num_columns - 1)).Copy
End With

Position = 1 'Determine the position of the slide

For i = 0 To index - 1
    Position = Position + Type_1_index(i) + Type_2_index(i)
Next i

Position = Position + 1

Position = Position + Num_Type_3

Set New_slide = myPresentation.Slides.AddSlide(Position, myPresentation.SlideMaster.CustomLayouts(7))   'Create new slide

With New_slide
    .Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse  'Create Table

    Set New_Table = .Shapes(.Shapes.Count)   'Set position in slide
    New_Table.Left = 30
    New_Table.Top = 95
    New_Table.Width = 660

   '****Next line produces error****     

With New_Table.OLEFormat.Object.Sheets("Powerpoint feeder")     
            Set rng = .Range(.Cells(rng.Row, rng.Column), .Cells(rng.Row + num_rows - 1, rng.Column))
            For Each cel In rng
                If Left(cel.Value, 1) = "A" Then
                    For x = 1 To 5
                        cel.Offset(0, x).ClearContents 'Enables headline overflow to adjacent empty cells
                    Next x
                End If
            Next cel
        End With

End With

Num_Type_3 = Num_Type_3 + 1

End Sub

编辑:

在@Domenic 的帮助下,我能够在没有链接的情况下创建表格以将尺寸缩小到初始尺寸的十分之一。伟大的!并且还使标题的可读性与下面的代码一起工作。但是,该代码仅在我“走过”它时才有效,而当我穿过它时则无效。每次运行它时,都会收到运行时错误“-2147467259 (80004005)”:对象“Shape”的方法“Table”失败。我尝试Application.Wait在错误之前添加我试过了On Error Resume Next,我试过了DoEvents没有什么可以让它发挥作用。有什么建议么?

`With New_slide
myPresentation.Windows(1).Activate
myPresentation.Windows(1).View.GotoSlide Position
.Application.CommandBars.ExecuteMso "PasteExcelTableSourceFormatting"

Set New_Table = .Shapes(.Shapes.Count)
    New_Table.Left = 30
    New_Table.Top = 95
    New_Table.Width = 660

        With New_Table.Table    '****ERROR OCCURS HERE****
            For iRow = 1 To .Rows.Count
                If Left(.Cell(iRow, 1).Shape.TextFrame.TextRange.Text, 1)= "A" Then
                   For iCol = 2 To 4
                        .Cell(iRow, iCol).Shape.TextFrame.TextRange.Text = ""
                   Next iCol
                   .Cell(iRow, 1).Merge MergeTo:=.Cell(iRow, 4)
                   .Rows(iRow).Height = 13.04 'Point equivalent of standard rows with a height of 0.46 cm
                End If
            Next iRow
        End With`

编辑2:

解决方案由 Domenic 提供。在粘贴后立即添加此延迟就足够了,而不会减慢代码太多。

多梅尼克

编辑

单步执行代码时您没有收到错误这一事实表明,在粘贴对象之前可能需要更多时间。我们可以尝试调用另一个将过程延迟几秒钟的过程,同时调用 DoEvents 函数。因此,首先将以下宏复制到您的模块中...

Sub Delay(Optional ByVal Secs As Integer = 3)
     Dim sngStartTime As Single
     sngStartTime = Timer
     Do Until Timer > sngStartTime + Secs
         DoEvents
     Loop
End Sub

然后,在您的原始代码中,在复制范围后立即调用宏...

Delay

默认情况下,您的宏将自动延迟 3 秒。如果需要,您可以延迟一段时间。例如,要延迟 5 秒,您可以这样调用它...

Delay 5

此外,在粘贴后立即调用 Delay 也可能会有所帮助。

编辑结束----------------------------------------------- -------------------------------------------------- ---------------

首先,将 PasteSpecial 的 DataType 参数更改为ppPasteHTML...

.Shapes.PasteSpecial DataType:=ppPasteHTML, Link:=msoFalse  'Create Table

然后,将您的With/End With语句更改如下...

Dim iRow As Long
Dim iCol As Long

With New_Table.Table
    For iRow = 1 To .Rows.Count
        If Left(.cell(iRow, 1).Shape.TextFrame.TextRange.Text, 1) = "A" Then
            For iCol = 2 To .Columns.Count
                .cell(iRow, iCol).Shape.TextFrame.TextRange.Text = ""
            Next iCol
        End If
    Next iRow
End With

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Access 2010中的VBA-运行时错误430

来自分类Dev

OLE中Excel文件中的名称冲突

来自分类Dev

错误处理不适用于 excel-vba 中的运行时错误 9

来自分类Dev

将Excel作为OLE对象嵌入MS Word中,显示错误

来自分类Dev

通过翻新处理同步呼叫中的错误

来自分类Dev

运行时错误91:未在Excel 2013中设置对象变量或带有块变量

来自分类Dev

Windows服务中的Excel OLE自动化

来自分类Dev

在Hive中处理行时出现Hive运行时错误

来自分类Dev

如何在Excel VBA中打开“新的PPT文件”选项

来自分类Dev

在网站中嵌入Word,PPT和Excel

来自分类Dev

使用带有Win32 :: OLE的Perl修改Excel电子表格中的单元格范围

来自分类Dev

Delphi 7 Excel Ole对象文本字体颜色

来自分类Dev

Excel OLE对象嵌入式路径位置

来自分类Dev

使用OLE调用现有的Excel文件-Delphi

来自分类Dev

使用OLE调用现有的Excel文件-Delphi

来自分类Dev

Excel 宏中的运行时错误 1004:应用程序定义或对象定义错误

来自分类Dev

通过JavaScript或JQuery处理SVG文件(对象)中的元素

来自分类Dev

通过向量中的对象的各个方面处理崩溃循环

来自分类Dev

android中的Geocoder有时会在某些设备上显示“服务不可用错误”。怎么处理呢?

来自分类Dev

继续处理通过mergeMap可传递的RxJs中的错误

来自分类Dev

遇到运行时错误'438'对象在Excel宏中不支持此属性或方法

来自分类Dev

在Word文档[VBA]中显示表中的OLE对象

来自分类Dev

SUMPRODUCT() 在 Excel 中处理数组

来自分类Dev

处理“#Value!” 在 Excel 公式中

来自分类Dev

IDE 会在设置错误处理程序时引发 Excel VBA 运行时错误

来自分类Dev

通过jenkins执行批处理命令不会提取文件,尽管在作为bat文件运行时会提取文件

来自分类Dev

通过PPT插件插入图像

来自分类Dev

VBA Excel中的登录尝试和错误处理

来自分类Dev

VBA错误处理(Excel中的INDEX / MATCH)

Related 相关文章

  1. 1

    Access 2010中的VBA-运行时错误430

  2. 2

    OLE中Excel文件中的名称冲突

  3. 3

    错误处理不适用于 excel-vba 中的运行时错误 9

  4. 4

    将Excel作为OLE对象嵌入MS Word中,显示错误

  5. 5

    通过翻新处理同步呼叫中的错误

  6. 6

    运行时错误91:未在Excel 2013中设置对象变量或带有块变量

  7. 7

    Windows服务中的Excel OLE自动化

  8. 8

    在Hive中处理行时出现Hive运行时错误

  9. 9

    如何在Excel VBA中打开“新的PPT文件”选项

  10. 10

    在网站中嵌入Word,PPT和Excel

  11. 11

    使用带有Win32 :: OLE的Perl修改Excel电子表格中的单元格范围

  12. 12

    Delphi 7 Excel Ole对象文本字体颜色

  13. 13

    Excel OLE对象嵌入式路径位置

  14. 14

    使用OLE调用现有的Excel文件-Delphi

  15. 15

    使用OLE调用现有的Excel文件-Delphi

  16. 16

    Excel 宏中的运行时错误 1004:应用程序定义或对象定义错误

  17. 17

    通过JavaScript或JQuery处理SVG文件(对象)中的元素

  18. 18

    通过向量中的对象的各个方面处理崩溃循环

  19. 19

    android中的Geocoder有时会在某些设备上显示“服务不可用错误”。怎么处理呢?

  20. 20

    继续处理通过mergeMap可传递的RxJs中的错误

  21. 21

    遇到运行时错误'438'对象在Excel宏中不支持此属性或方法

  22. 22

    在Word文档[VBA]中显示表中的OLE对象

  23. 23

    SUMPRODUCT() 在 Excel 中处理数组

  24. 24

    处理“#Value!” 在 Excel 公式中

  25. 25

    IDE 会在设置错误处理程序时引发 Excel VBA 运行时错误

  26. 26

    通过jenkins执行批处理命令不会提取文件,尽管在作为bat文件运行时会提取文件

  27. 27

    通过PPT插件插入图像

  28. 28

    VBA Excel中的登录尝试和错误处理

  29. 29

    VBA错误处理(Excel中的INDEX / MATCH)

热门标签

归档