Почему Excel вызывает исключение при выходе из командной строки? - PullRequest
1 голос
/ 11 ноября 2009

У меня есть простой файл 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

Почему существует разное поведение в зависимости от того, как я запускаю приложение, и что я могу сделать, чтобы приложение работало одинаково, независимо от того, как я его запускаю?

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

По словам Google olconnector.dll является Outlook Connector, надстройка для офиса.

http://ask.officelive.com/workspace/qna/t/4578.aspx

Поскольку он имеет дело с Outlook, я полагаю, что он будет зависеть от имени входа, которое вы используете на компьютере.

Когда вы открываете Excel, используете ли вы те же учетные данные, что и учетная запись, с которой вы входите на компьютер?

ProcessStartInfo startInfo = null;
Process batchProcess = null;

startInfo = new ProcessStartInfo();
startInfo.Domain = "somedomain";
startInfo.UserName = "Domainuser";
startInfo.Password = "pwd";

Не совсем уверен, что это за ошибка, но вы можете попробовать это.

0 голосов
/ 11 ноября 2009

Когда я помещаю только команду application.quit в функцию Workbook_Open (), она отлично работает здесь, когда я запускаю ее с помощью двойного щелчка, команды test.xlsm, а также команды "c:\Programme\Microsoft Office\Office12\EXCEL.EXE" test.xlsm.

  • Вы также пытались свести проблему только к одной команде?
  • Какую команду вы используете из командной строки.
  • Может быть, вы можете попробовать поставить DoEvents после Application.Save команды?
  • Вы пытались изменить команду Excel.Application.Quit на Application.Quit? Может быть, это разница при запуске из командной строки.

Я использую Excel 2007 на Win XP Pro.

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