不幸的是,大多数 MS Office VB 错误消息都是 SHITTY!
为什么是狗屎?因为普通用户很难理解它们。当您单击错误消息中的“帮助”按钮时,它会将您带到一些不相关的在线链接/页面或 Excel 帮助中。我一直在考虑在 Microsoft 中申请为“错误消息编写者”:D
在使用它超过 18 年之后,我可以识别其中的大多数,但时不时地,当我遇到一个新的错误消息时,我实际上必须在谷歌上搜索该错误的含义!!!
无论如何...
就像我说的,“当 Excel 处于编辑模式时,它会完全冻结”
要看到这一点并真正了解正在发生的事情,请执行以下操作。
- 打开 Excel
- 添加新工作表
- 转到任何工作表,然后在单元格A1F2中按或双击。即把单元格置于编辑模式
- 打开简报
- 添加新演示文稿
- 点击插入 | 对象 | Microsoft Excel 工作表(新建)如下图所示
你会注意到你现在会得到一个更“容易理解的错误”
选择
我们知道 Excel 让您可以创建多个 Excel 实例。所以我们现在要做的是
- 创建一个新的 Excel 实例
- 添加新工作表
- 将空白工作簿保存在用户的临时目录中
- 在 PowerPoint 中添加该文件
- 删除那个文件
优点
您将能够添加形状
缺点
在您处于编辑模式之前,您将无法使用它。我仍在尝试通过双击它来弄清楚如何在单独的 Excel 实例中打开它。
代码
'~~> API to get user's temp path
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH As Long = 260
Sub Sample()
Dim oxlapp As Object, oxlwb As Object
Dim filePath As String
'~~> Create a temporary file name
filePath = TempPath & Format(Now, "ddmmyyhhmmss") & ".xlsx"
'~~> Create a new instance
Set oxlapp = CreateObject("Excel.Application")
'~~> Add a new workbook
Set oxlwb = oxlapp.workbooks.Add
'~~> Save it to the temp directory
oxlwb.SaveAs filePath, 51
'~~> Add the shape
ActivePresentation.Slides(1).Shapes.AddOLEObject 30, 30, 100, 100, , filePath, msoFalse, , , , msoFalse
oxlwb.Close (False)
oxlapp.Quit
Kill filePath
End Sub
Function TempPath() As String
TempPath = String$(MAX_PATH, Chr$(0))
GetTempPath MAX_PATH, TempPath
TempPath = Replace(TempPath, Chr$(0), "")
End Function
当您运行此代码时,您将看到以下内容