программно добавить модуль в xls 2003, используя vbscript - PullRequest
0 голосов
/ 08 апреля 2009

Первая часть сейчас работает [ У меня есть следующее, которое, кажется, зависает; часть, которая добавляет / удаляет модуль, работает при работе в VBA Я отмечаю, что у меня появляется диалоговое окно с надписью «эта книга содержит ссылки на другие источники данных», которое мне подходит, затем оно зависает Итак, я попытался установить второй аргумент в 0, а также попробовал 2, но все равно зависает (2-й аргумент - UpdateLinks, который можно найти здесь ) ]

dim objExcel
dim objWorkbook
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(  "H:\M\X\C.xls", 0 , , ,"PASSWORD!" )

Const modpath  = "H:\M\V\"
Const modtest  = "TEST.cls"
Const modname  = "TEST"

On Error Resume Next

Dim vbcomp
Set vbcomp = ActiveWorkbook.VBProject.VBComponents(modname)
objWorkbook.VBProject.VBComponents.Remove vbcomp
objWorkbook.VBProject.VBComponents.Import modpath & modtest

objWorkbook.Save
objWorkbool.Close
set vbcomp = nothing
set objworkbook = nothing
set objExcel = nothing

отредактировано снова 14.04.2009 Теперь я также разрешил «инструменты - макрос - безопасность - доступ к vbproject»

Сценарий теперь завершается, однако, при попытке открыть xls, чтобы увидеть, были ли внесены изменения, я получаю сообщение о том, что лист заблокирован «учетной записью, используемой для запуска сценария»; открыть «только для чтения» / уведомить

Почему неправильно отпускается управление **? **

Ответы [ 3 ]

0 голосов
/ 09 апреля 2009

Вот третья мысль. Вы пытались задать для свойства DisplayAlerts приложения значение FALSE, прежде чем включать модуль?

0 голосов
/ 15 апреля 2009

Отредактированный скрипт работает.

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

Быстрый поиск в сети показывает, что это невозможно сделать (sendkeys и т. Д.), Поэтому после ручного удаления пароля в проекте проблема решается

0 голосов
/ 08 апреля 2009

Первая мысль: ваша книга уже содержит ссылку (в рамках VBA) на библиотеку «Расширяемость Microsoft Visual Basic для приложений»? Он понадобится вам, чтобы иметь возможность общаться с объектом VBProject. На самом деле, у вас, вероятно, есть ссылка, если ваш код работает в VBA.

Вторая мысль: ActiveWorkbook, вероятно, не определен вне реальной рабочей книги. Попробуйте заменить его объектом objWorkbook.

...