不幸的是大多數的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來複制問題。 –