Я получаю ошибку во время выполнения 462 - PullRequest
0 голосов
/ 03 сентября 2010

HI,

У меня есть следующий фрагмент кода в 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

У меня две проблемы. Каждый раз, когда я запускаю код, я получаю ошибку времени выполнения 462 (компьютер удаленного сервера не существует или недоступен) в строке Charts.add.

Я знаю, что не правильно использую свойство objexcel, но я не уверен, где я ошибаюсь.

Также после запуска кода, хотя Excel закрывается. Процесс выполняется в фоновом режиме, и это мешает следующему запуску кода. Как мне закрыть Excel и избавиться от него из процессов диспетчера задач?

Ответы [ 3 ]

1 голос
/ 03 сентября 2010

Я думаю, вам нужно будет создать объект диаграммы, подобный этому, поскольку при использовании позднего связывания он не будет знать, что такое «диаграммы», если вы не вызовете его из родительского объекта.462 обычно означает, что что-то не соответствует действительности, даже если сообщение немного загадочное.

0 голосов
/ 04 сентября 2010

Как вам ваш вопрос

Как мне закрыть Excel и избавиться от него также из процессов менеджера задач?

Вы должны иметь возможность использовать Application.Quit Команда в конце вашего кода, если вы не запускаете подпрограмму из другого приложения, кроме Excel.Или вы должны быть в состоянии выполнить команду objexcel.Quit.Другой альтернативный метод - делегировать это команде оболочки: Shell "taskkill /f /im excel.exe".

Надеюсь, это поможет.Вы уже получили рабочий код?

0 голосов
/ 03 сентября 2010

Так же, как быстрое исправление попытки установить все, что вы объявляете / используете, в конце кода, чтобы ничего не оставалось открытым или активным.

Set objSht = Nothing

Дайте мне знать, если это решит проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...