VisualBasic程式的一段代碼,需要回傳excel程式的當前活動作業簿,現在代碼wb回傳的是nothing,求助如何修改
Private Sub Command6_Click()
Dim wb, sht, rng, xlsApp
On Error Resume Next
Set xlsApp = GetObject(, "Excel.Application")
If xlsApp Is Nothing Then
Set xlsApp = CreateObject("Excel.Application")
End If
Set wb = xlsApp.ActiveWorkbook
End Sub
程式除錯程序中發現及時打開了excel程式,仍然使用createobject創建excel程式,回傳的xlsApp是一個不含任何作業簿的程式,如何破解?
uj5u.com熱心網友回復:
創建Excel.Application 相當于你點擊Excel的圖示,打開了excel。這時候你還要做一件事情,要不然新建一個workbook,要不然打開一個已經存在的xls檔案不是么?所以你要呼叫Application.Workbooks.Add 新建一個或者 Application.Workbooks.open 打開一個已經存在的 workbook
uj5u.com熱心網友回復:
給你改了一下,不過是vbs,你需要自己定義變數,或者去掉option explicit:
xlsapp = null
on error resume next
Set xlsApp = GetObject(, "Excel.Application")
on error goto 0
if isnull(xlsapp) then
Set xlsapp = createobject("excel.application")
xlsapp.visible = true
xlsapp.workbooks.add
end if
Set wb = xlsApp.ActiveWorkbook
msgbox wb.name
uj5u.com熱心網友回復:
感謝大神的回復,有沒有辦法直接呼叫到當前已打開的活動作業簿,而不需要add或者open重新選擇uj5u.com熱心網友回復:
可以啊,找不到打開的Excel就提示:
set xlsapp = nothing
on error resume next
Set xlsApp = GetObject(, "Excel.Application")
on error goto 0
if xlsapp is nothing then
msgbox "沒有找到已經打開的Excel實體!"
else
Set wb = xlsApp.ActiveWorkbook
msgbox wb.name
end if
uj5u.com熱心網友回復:
感謝,就是還是搞不懂為什么getobject無法回傳打開的excel程式uj5u.com熱心網友回復:
我直接 Copy你的代碼測驗了一下,根本沒問題。
打開 VB6,新建一個標準EXE工程,畫個按鈕,Ctrl+V程序代碼;
然后只是添加了一句作為“驗證”用的陳述句而已。
隨便找了個Excel檔案打開,回到VB6運行……
驗證結論是“完全正常” !!!

uj5u.com熱心網友回復:
不知道是不是系統問題,嘗試了幾次,都沒有辦法通過getobject回傳excel程式uj5u.com熱心網友回復:
意外運行了一下,生成EXE檔案后,程式使用沒有問題,程式除錯無效,具體原因和解決方案待解惑uj5u.com熱心網友回復:
要不還是把代碼上傳吧,大家看著還能方便給你指導轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/15147.html
標籤:VBA
