ASP Excel.Application objExcel.Range («диапазон») замораживание - PullRequest
0 голосов
/ 08 декабря 2010

Всякий раз, когда я использую этот код,

Set oExcel = CreateObject("Excel.Application")
Set oWorkbook = oExcel.Workbooks.Open(sPathToTemplate)

oExcel.Range("shipping_name").Value = strShippingName

oWorkbook.Close()
Set oWorkbook = Nothing
Set oExcel = Nothing

Процесс Excel на сервере зависает, и ячейки никогда не изменяются.Или, по крайней мере, это то, что кажется.

Книга открывается просто отлично, и если я не пытаюсь изменить содержимое ячейки, код завершается без ошибок.Но когда я добавляю изменение обратно и обновляю страницу, в диспетчере задач появляется процесс EXCEL.exe, и скрипт перестает отвечать на запросы.Я должен убить процесс вручную, чтобы время ожидания истекло.

Что-нибудь, что я могу сделать, чтобы заставить код работать?

1 Ответ

1 голос
/ 08 декабря 2010

Возможно, это связано с тем, что вы не сохраняете книгу.На рабочем столе это может привести к тому, что Excel сгенерирует «Хотите сохранить изменения?»диалоговое окно.

Попробуйте добавить

oWorkbook.saved = true

перед закрытием книги.Это скажет Excel не беспокоиться о том, изменилась ли рабочая книга (но не сохранит документ).Если ваш asp работает, то это диалог сохранения, который вызывает проблему.Чтобы сохранить изменения, вам нужно вызвать один из

oWorkbook.Save
oWorkbook.SaveAs

методов

...