不幸的是大多数的MS Office的VB错误的消息是低劣的!
为什么选择Shitty?因为它们很难被普通用户理解。当您单击错误消息中的“帮助”按钮时,它会将您带到一些不相关的链接/页面或Excel帮助中。我在微软已经想申请为“错误信息作家”:d
与它一起工作了超过18年后,我可以识别大部分,但每一个现在,然后,当我遇到一个新的错误信息,我实际上已经搜索谷歌找到那个错误意味着什么!
反正...
就像我说的,“当Excel在编辑模式下,它像是冻结完全”
而要看到这个动作,并真正了解发生了什么, 请执行下列操作。
- 打开Excel
- 添加新的工作表
- 去任何纸张,并按F2或细胞A1双击。即把细胞在编辑模式下
- 打开PowerPoint
- 添加一个新的演示
- 点击插入| OBJECT | 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
当你运行该代码,这是你会看到什么
这是不是一个错误。当Excel处于编辑模式时,它会完全冻结:) –
Excel无法在编辑模式下处理COM请求(原因很明显)。正在积极编辑的'Range'的'.Value'是什么? – Comintern
@Comintern“明显的原因”对我来说并不明显,Google搜索“编辑模式下的Excel COM请求”后不明显,这是否在任何地方记录?另外,我正在编辑的“Value”可以是excel文档中的任何单元格,但通常我使用A1来复制问题。 –