У меня есть простой файл Excel, который запрашивает базу данных при ее открытии, а затем автоматически закрывается.
- Если дважды щелкнуть файл, чтобы открыть его из Проводника Windows (я использую Windows XP и Excel 2002), он работает нормально.
- Однако, если я запускаю его с помощью
Excel "C:\DataUpdate.xls"
из Пуск> Выполнить или из Shell
в другом экземпляре Excel в отдельном файле, Excel завершится сбоем при выходе.
Я не могу понять, почему он делает это в одном сценарии, а не в другом.
В DataUpdate.xls у меня есть 2 процедуры, UpdateTable()
и OnWorkbookOpen()
, которые вызываются из Workbook_Open()
при открытии книги.
Option Explicit
Sub UpdateTable()
Dim ws As Worksheet
Dim qt As QueryTable
Set ws = Worksheets("Sheet1")
Set qt = ws.Range("A1").QueryTable
qt.Refresh BackgroundQuery:=False
End Sub
Sub OnWorkbookOpen()
On Error Resume Next
If ActiveWorkbook.Name = "DataUpdate.xls" Then
'I put this If statement in so I can change the file's
'name and then edit the file without code
'running.
UpdateTable
ActiveWorkbook.Save
Excel.Application.Quit
End If
End Sub
Если я открою файл из Windows Explorer, все в порядке. Если я запускаю его из командной строки с Excel "C:\DataUpdate.xls"
, код работает нормально, пока приложение не попытается выйти с помощью Application.Quit
, после чего Excel выдает исключение.
Когда я просматриваю подробности отчета об ошибке, вот некоторая информация, которую я нахожу:
AppName: excel.exe
AppVer: 10.0.6854.0
ModName: olconnector.dll
ModVer: 2.0.2303.0
Смещение: 000114d5
Почему существует разное поведение в зависимости от того, как я запускаю приложение, и что я могу сделать, чтобы приложение работало одинаково, независимо от того, как я его запускаю?