Как обрабатывать Excel остается ошибка - PullRequest
0 голосов
/ 24 марта 2011

Позвольте мне прояснить себя.Мне нужно получить доступ к файлу Excel, но при попытке приложение говорит, что невозможно получить доступ к указанному файлу.Проблема в том, что он не открывается.

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

Пожалуйста, помогите мне!Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Рассматривая другие ваши вопросы, я также предполагаю, что вы автоматизируете Excel из Access с помощью VBA. Я предполагаю, что у вас есть код по этим направлениям

Dim objExcel As Excel.Application
Dim curWorkbook As Excel.Workbook

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Set curWorkbook = objExcel.Workbooks.Open("C:\Temp\Excel.xls")

Как указывает, остальные процессы Excel показывают, что вы завершили свой код, не закрывая файл Excel. Возможно, вы просто забыли это сделать или соответствующий код не запущен (возможно, из-за ошибки; тем временем вы подтвердили мое предположение в своем комментарии). Что полезно, так это убедиться (по крайней мере, во время разработки), чтобы ваш Excel всегда был видимым (см. Мой пример кода выше), чтобы вы могли видеть возможные ошибки, которые не позволяют сохранить вашу книгу и, следовательно, закрыть Excel. Для вашего окончательного кода (когда вы не хотите показывать Excel, т.е. не делаете его видимым) вы можете проверить, действительно ли файл а) был сохранен, б) рабочая книга закрыта и никакая другая рабочая книга не остается открытой, например вот так

If objExcel.Workbooks.Count = 0 Then
   objExcel.Quit
Else
   [Problem. Try to find and solve the problem before ending the code]
End If

И вы смотрите на добавление кода, чтобы поймать ошибки и убедиться, что Excel действительно завершен, несмотря ни на что.

On Error GoTo ErrCleanupImport
[your normal Code]


ErrCleanupImport:
    [quit excel and clean up]

End Sub

НТН Andreas

1 голос
/ 24 марта 2011

Ваш вопрос не совсем понятен, но я думаю, что вы автоматизируете Excel из Access VBA, и после того, как вы закончили работу с Excel, он не закрывается должным образом, и поэтому при следующем запуске кода Access VBA он может 'Не открывать файл, так как он уже открыт.

Если это так, вам необходимо убедиться, что вы правильно закрыли Excel в своем коде VBA.Не видя вашего точного кода, трудно сказать наверняка, что вам нужно сделать, но это должно быть что-то вроде этого (wb - это WorkBook, ws - это WorkSheet, а app - этоApplication объект):

wb.Save
wb.Close
app.Quit

Set ws = Nothing
Set wb = Nothing
Set app = Nothing

Если, с другой стороны, вы имели в виду, что экземпляр Excel, который заблокировал файл, не был запущен вашим кодом, то это становится немного сложнее.Вы можете написать код, чтобы убить все процессы Excel, запущенные в данный момент, но это может означать, что вы убьете экземпляр Excel, который в данный момент использует пользователь или который используется другим автоматизированным процессом, так что это будет довольно опасно, если вы не скажетесо 100% -ной уверенностью, что ваше приложение всегда будет работать на выделенном компьютере, не уверен ни в чем другом.

...