Что нового

Не могу понять причину отказа работы _ExcelBookClose

Pavel

Новичок
Сообщения
125
Репутация
3
Доброго времени суток!
Занимаюсь написанием скрипта, в котором использую _ExcelBookOpen() и _ExcelReadSheetToArray для вычислений.
Проблема в том, что на Windows 2003 (x86) и Office 2003 функция _ExcelBookClose работает (окно закрывается и процесс пропадает), а вот в Windows 7 x64 и Office 2010 - нет!
Как можно решить проблему? С чем она связана, кто знает?
Код привожу:
Код:
Func ExcelParse()
	Local $copyArray
	TrayTip("Обработка прайса", "Произвожу вычисления...", 3, 16)
	$oExcel = _ExcelBookOpen($sFilePath1, 0)
	$aArray = _ExcelReadSheetToArray($oExcel, 1, 1, 0, 1) 
	$iIndex = _ArraySearch($aArray, $FoundArti, 0, 0, 0, 1, 1, 1)
	If @error Then
		MsgBox(48, "Проблема", 'Артикул "' & $FoundArti & '" не найден в прайс-листе.')
		_ExcelBookClose($oExcel, 0, 0)
		Exit
	Else
		$name = _ExcelReadCell($oExcel, $iIndex, 2)
		$cost = _ExcelReadCell($oExcel, $iIndex, 4)
		$ves = _ExcelReadCell($oExcel, $iIndex, 6)
		$copyArray = _ExcelReadSheetToArray($oExcel, $iIndex, 1, 1, 7)
		_ExcelBookClose($oExcel, 0)
		Calc()
	EndIf

EndFunc   ;==>ExcelParse
Кто знает, почему не закрывается окно и, следовательно, процесс. Как решить проблему?
 
Автор
P

Pavel

Новичок
Сообщения
125
Репутация
3
Пришло сообщение на мыло, что кто-то ответил, но ответ похоже удалил сам автор ответа. Странно...
Подскажите хотя бы, у кого-нибудь повторяется подобная ошибка с Office 2010?


Добавлено:
Сообщение автоматически объединено:

Причину нашел благодаря английскому форуму.
Причина была в компиляции под x86.
Т.е. как я понял, так как офис и винда 64битные, то использует другие библиотеки.
И некоторые "32битные" запросы не выполняются или выполняются некорректно.
Поэтому в 32битной винде/офисе всё было ок. Видимо придётся делать две разных версии программы (x64/x86)...
Надеюсь, кому-нибудь поможет.
 

valdur2000

Знающий
Сообщения
155
Репутация
7
Столкнулся с подобной проблемой. Открывал файл, забирал строку в массив и закрывал файл, а процесс excel.exe оставался висеть. решил вот как:
Код:
_ExcelBookClose($oExcel)
$oExcel = 0
 
Верх