WedX - журнал о программировании и компьютерных науках

Как обратиться к книгам, открытым ранее, из слова vba?

у меня есть небольшая проблема с использованием VBA в MS Word. Я пытаюсь сослаться на некоторые рабочие книги, которые были открыты до запуска Word.

Изнутри короткий тестовый макрос в слове простой

MsgBox Workbooks.Count

выдает значение 0, хотя открыты 3 (пустые) книги. Когда 3 книги открываются после запуска Word, я получаю правильное значение 3.

Как это исправить?

jm2p Зеф

06.09.2016

  • Вы говорите об Excel, а не о Word, верно? Я не думаю, что Workbooks.Count доступен внутри макроса Word. 06.09.2016
  • В любом случае, спасибо большое, ребята, теперь все работает! :) 06.09.2016

Ответы:


1

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

следующий код устанавливает объект приложения Excel, пытающийся сначала получить любой запущенный экземпляр, а затем, если сеанс Excel уже не запущен, открыть новый:

Option Explicit

Sub LateBindingExcel()
    Dim xlApp As Object

    Set xlApp = GetExcelObject

    MsgBox xlApp.Workbooks.count
End Sub

Function GetExcelObject() As Object
    Dim excelApp As Object

    On Error Resume Next
    Set excelApp = GetObject(, "Excel.Application") '<--| try getting a running Excel application
    On Error GoTo 0
    If excelApp Is Nothing Then Set excelApp = CreateObject("Excel.Application") '<--| if no running instance of Excel has been found then open a new one

    Set GetExcelObject = excelApp '<--| return the set Excel application
End Function
06.09.2016

2

Проверь это:

'Option Explicit

'Опция явная

Sub check()

    Set objExcel = GetObject(, "Excel.Application")
    Set wbs = objExcel.Workbooks

    Debug.Print wbs.Count

    Set objExcel = Nothing
    Set wbs = Nothing

End Sub
06.09.2016
  • Вы должны прокомментировать Option Explicit. 06.09.2016
  • Хорошо, я нашел свои 3 рабочих тетради. Но теперь у меня есть еще один вопрос: может ли быть открыто более одного экземпляра Excel? И как их перечислить/найти нужный? 06.09.2016
  • Проверьте здесь, возможно, вы найдете что-то полезное: stackoverflow.com/questions/30363748/ 06.09.2016
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]