2010-09-03 100 views
0

嗨,我得到運行時錯誤462

我在Access中有以下一段代碼。

Dim objSht As excel.Worksheet 
Dim objexcel As New excel.Application 
Dim wbexcel As excel.Workbook 
Dim wbExists As Boolean 
Dim objRange As excel.Range 
Dim isFileAlreadyPresent As Boolean 

Set objexcel = CreateObject("excel.Application") 

Set wbexcel = objexcel.Workbooks.Open(file_name) 
Set objSht = wbexcel.Worksheets(table_name) 
isFileAlreadyPresent = True 

objSht.Activate 
objSht.Range(Range_para).Select 
Charts.Add 
ActiveChart.chartType = xlColumnClustered 
ActiveChart.SetSourceData Source:=Sheets(table_name).Range(Range_para), _ 
          PlotBy:= xlColumns 
ActiveChart.Location Where:=xlLocationAsNewSheet 
ActiveChart.HasLegend = False 

With ActiveChart 
    .HasTitle = True 
    .ChartTitle.Characters.text = CHart_title 
    .Axes(xlCategory, xlPrimary).HasTitle = False 
    .Axes(xlValue, xlPrimary).HasTitle = False 
End With 

If isFileAlreadyPresent = True Then 
    wbexcel.Save 
Else 
    wbexcel.SaveAs (file_name) 
End If 
objexcel.Visible = True 
wbexcel.Close 

我有兩個問題。每次運行代碼時,我都會在Charts.add行得到運行時錯誤462(遠程服務器機器不存在或不可用)。

我知道我沒有正確使用objexcel屬性,但我不確定我哪裏出錯了。

代碼運行後,即使excel關閉。該進程在後臺運行,這會干擾下一次運行的代碼。我如何關閉excel並從任務管理器進程中擺脫它?

+0

嘗試從您的代碼中移除不需要重現問題的所有內容。這會讓別人更容易幫助你。 – 2010-09-03 11:36:49

+1

對於我來說,似乎有一個問題,即您已將Dim objexcel As New excel.Application和Set objexcel = CreateObject(「excel.Application」)。如果使用後者,則變量聲明中不需要New關鍵字。 – 2010-09-03 15:40:45

+0

我同意彼得的評論。重新發布你的代碼(你可以編輯你的問題)可能是值得的,這樣至少可以編譯它。 – JohnZaj 2010-09-04 03:52:48

回答

0

就像一個快速修復嘗試設置您在代碼結束時聲明/使用的所有內容,以確保沒有任何內容處於打開狀態或處於活動狀態。

Set objSht = Nothing 

讓我知道是否能解決問題

+0

沒有解決這個問題 – tksy 2010-09-03 12:51:54

+0

一旦你完成了它們,明確銷燬對象是一種很好的做法。不過,我相信,大部分情況下,VBA都有自己的對象處理服務,並且從未讓我失望過。 (至少這就是微軟說的......不知道 - 這將是一個很好的問題 - 我相信SO的創建者之一在Excel VBA團隊中工作過) – JohnZaj 2010-09-04 03:44:17

1

我想你需要創建圖表對象這樣的,因爲你的使用後期綁定也不會知道什麼是「圖表」除非你打電話它來自父對象。

objexcel.Charts.Add 

錯誤462通常意味着某些東西沒有合格的權利,即使該信息有點神祕。

+0

剛剛嘗試過使用你的代碼(不得不僞造雖然有些變數)。 一旦Charts.Add事物被修復,它似乎可以多次工作。它只會要求你替換text.xls。很有可能當你遇到Charts.Add時,它永遠沒有機會完成。 – BIBD 2010-09-03 15:54:44

0

當你你的問題

如何關閉Excel,並從任務管理器進程也擺脫它 ?

只要您沒有從Excel以外的其他應用程序運行子程序,您應該可以在代碼末尾使用Application.Quit命令。或者,您應該可以執行objexcel.Quit命令。另一種替代方法是將其委託給shell命令:Shell "taskkill /f /im excel.exe"

我希望這會有所幫助。你有沒有得到一段代碼?

+0

呃,試着讀這個問題的第一句話:「我在Access中有以下一段代碼。」 – 2010-09-04 19:32:22

+0

第一次閱讀時,那部分讓我無法逃脫。編輯。 – JohnZaj 2010-09-06 18:34:57

相關問題