Управляйте 2 отдельными экземплярами Excel COM независимо …, он может быть сделан?

О Боже, спасибо Р. Ричардсу, я был настолько удивлен, что мой html-код был верным ... На самом деле, при всей ошибке метки я написал signupForm ['mycontrol'], а не signupForm.controls ['myControl' ].

Спасибо за руководство.

6
задан David Segonds 5 February 2009 в 17:46
поделиться

3 ответа

Я не знаю вещь о Python, к сожалению, но если он работает через COM, Excel является приложением ни одного Экземпляра, таким образом, необходимо смочь создать столько же экземпляров разрешений на память сколько Excel.

Используя C# можно создать несколько Экземпляров приложения Excel через:

Excel.Application xlApp1 = new Excel.Application();
Excel.Application xlApp2 = new Excel.Application();
Excel.Application xlApp3 = new Excel.Application();

Используя позднее связывание в C# можно использовать:

object objXL1 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
object objXL2 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
object objXL3 = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));

При использовании VB.NET VB6 или VBA можно использовать CreateObject следующим образом:

Dim objXL1 As Object = CreateObject("Excel.Application")
Dim objXL2 As Object = CreateObject("Excel.Application")
Dim objXL3 As Object = CreateObject("Excel.Application")

К сожалению, в Python, у меня нет подсказки. Но если нет некоторое ограничение к Python (который я не могу вообразить?) затем я думал бы, что это очень выполнимо.

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

2
ответ дан 10 December 2019 в 02:54
поделиться

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

Мое знание Python не огромно, но на большинстве языков существует способ указать при создании COM-объекта, хотите ли Вы, чтобы это было новым объектом или подключением к существующему ранее экземпляру по умолчанию. Проверьте документы Python на что-то вдоль этих строк.

Можно ли перечислить вид определенных проблем, Вы имеете и точно что Вы надеетесь сделать?

0
ответ дан 10 December 2019 в 02:54
поделиться

См. «Запуск нового экземпляра COM-приложения» Тима Голдена , также упоминается здесь , который дать подсказку использовать

xl_app = DispatchEx("Excel.Application")

вместо

xl_app = Dispatch("Excel.Application")

для запуска отдельного процесса. Итак, вы должны иметь возможность:

xl_app_1 = DispatchEx("Excel.Application")
xl_app_2 = DispatchEx("Excel.Application")
xl_app_3 = DispatchEx("Excel.Application")

Обратите внимание , что когда вы закончите, чтобы закрыть приложение, я обнаружил, что это необходимо сделать:

xl_app.Quit()
xl_app = None

Я обнаружил, что процесс не завершится до xl_app = None , то есть счетчик ссылок на COM-объект Python обнуляется.

Примечание. У меня осталась одна проблема: когда моя программа Python работает, если я дважды щелкну файл Excel в проводнике (по крайней мере, в Win2k), он откроет файл в существующем Excel. процесс, запущенный Python (который выполняется скрыто), что нарушает работу программы Python. Я еще не нашел решения для этого.

7
ответ дан 10 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: