Как получить название книги для запуска экземпляра excel с помощью vbscript ..?

Dim objXL, strMessage On Error Resume Next Set objXl = GetObject(, "Excel.Application") If Not TypeName(objXL) = "Empty" then strMessage = "Excel Running" Else strMessage = "Excel NOT Running" End If MsgBox strMessage, vbInformation, "Excel Status" 

Привет большое привет. Это действительно приближает меня к тому, что я ищу, гораздо ближе к решению. Позвольте мне рассказать вам мое точное требование / вопрос: на самом деле моя проблема в том, что с Java я пытаюсь найти экземпляр Excel с определенным именем книги, но я не возвращаю экземпляр Excel, даже если он появляется. В моем случае у меня открыт Excel с двумя книгами «Book1» и «Book2». Когда я пытаюсь найти Excel с любым из этих названий книг, я не получил никакого результата. Чтобы сузить эту проблему, эта проблема наблюдается только на одной из моих клиентских машин. На компьютерах отдыха этот же код Java работает нормально. Это началось после удаления Excel2010 и установки Excel2007.

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

Эй, пожалуйста, направьте меня дальше на создание такого скрипта, где я дам имя и сценарий книги, найдет ли этот экземпляр Excel или нет. Не проблема, даже если имя рабочей книги передается в виде жесткого ввода в скрипте. Я буду изменять по имени моей книги.

Спасибо за ваш предыдущий ответ и жду этого тоже .. :))

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

  1. Этот код для изучения всех открытых книг во всех случаях Может ли VBA охватить экземпляры Excel?
  2. Обнаружить, если файл уже используется. См . Предложение Сида об обнаружении того, что книга Excel уже открыта
  3. Предложение Дуга использовать GetObject для присоединения к экземпляру хоста, где вы знаете название книги. В соответствии с статьей поддержки Microsoft вы можете использовать Set xlApp = GetObject("YourExcelName").Application для обнаружения, если «ВашеExcelName» открыто в любом экземпляре

В вопросе, который вы изначально задали, приведенный ниже код использует GetObject чтобы определить, открыт ли какой-либо экземпляр, и есть ли ActiveWorkbook и какое это имя. Из вашего отредактированного вопроса мои три приведенные выше ссылки более актуальны, чем этот код.

 Dim objXL, WB, strMessage On Error Resume Next Set objXL = GetObject(, "Excel.Application") Set WB = objXL.ActiveWorkbook On Error GoTo 0 If Not TypeName(objXL) = "Empty" Then If Not TypeName(WB) = "Nothing" Then strMessage = "Excel Running - " & objXL.ActiveWorkbook.Name & " is active" Else strMessage = "Excel Running - no workbooks open" End If Else strMessage = "Excel NOT Running" End If MsgBox strMessage, vbInformation, "Excel Status""" 

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

 Dim objXL, strName, bFound, strMsg On Error Resume Next Set objXl = GetObject(, "Excel.Application") On Error GoTo 0 If Err Then MsgBox "Excel NOT Running", vbInformation, "Excel Status" WScript.Quit(-1) End If strName = InputBox("Enter Workbook Name:", "Required") If Len(strWBName) = 0 Then WScript.Quit(-2) bFound = False If objXL.Workbooks.Count > 0 Then For Each wb In objXL.Workbooks If wb.Name = strName Then bFound = True Exit For End If Next End If strMsg = "Workbook " & UCase(strName) & " is " If bFound Then MsgBox strMsg & "open", vbInformation, "Result" Else MsgBox strMsg & "not open", vbInformation, "Result" End If 

PS После чтения Brettdj обновленный ответ выглядит так: GetObject может помочь для нескольких экземпляров Excel, поэтому, если это работает, вы можете капсулировать свой тест в функции.

 Function IsWBookOpen(strWBook) On Error Resume Next Dim wb: Set wb = GetObject(strWBook) IsWBookOpen = Not Err End Function 

Вы можете записать имя активной книги следующей командой. objXL.ActiveWorkbook.Name

 Dim objXL, strMessage On Error Resume Next Set objXL = GetObject(,"Excel.Application") If Not TypeName(objXL) = "Empty" then strMessage = "Excel Running" WScript.Echo "The active workbook name is " & objXL.ActiveWorkbook.Name Else strMessage = "Excel NOT Running" End If MsgBox strMessage, vbInformation, "Excel Status" 
  • Код для прокрутки всех файлов excel в указанной папке и вытаскивание данных из определенных ячеек
  • Закрыть ТОЛЬКО Процессы Excel, открытые UFT
  • Выполнение файла VBScript из макросов Excel VBA
  • Как узнать количество экземпляров общего файла Excel с помощью VBScript
  • макрос vb скрипт для всплывающего окна в Excell
  • Преобразовать рабочий лист в массив, содержащий только строки
  • Открытие файла excel работает нормально, но если я планирую сценарий через планировщик задач Windows, он не работает
  • VB Script Keeps дает мне «Макрос может быть недоступен в этой книге или все макросы могут быть отключены»
  • Как сопоставить данные на 2 листах и ​​копировать данные на основе соответствия?
  • EXCEL VBA с переменной VBS SAP session.findById не работает
  • Не удалось undersatnd передать значения через аргументы «IconFileName», «IconIndex» метода OLEObjects.Add
  • Interesting Posts

    HTML-таблица в Excel Javascript

    VBA преобразует много столбцов в два – что я делаю неправильно?

    Основная ошибка оператора IF для последнего измененного отслеживания

    Найти значение из одной ячейки, скопировать значение из ячейки рядом с этой ячейкой и вставить ее на другой лист

    VBA – Событие триггера с решателем excel

    Как остановить переименование excelsheets после запуска макроса сохранения

    Нарушения нулевого указателя сонара

    Таблица сводных таблиц Excel – идентификатор и имя на одной строке

    Excel 2013 сравнивает даты в разных строках с использованием макроса «Ошибка времени выполнения 13, несоответствие типа»

    Библиотека Excel и EPPlus .NET: как вы можете создавать динамические списки с другого листа?

    Excel Dynamic Formula / Reference Workbook

    VBA-Excel Экспорт данных в другую книгу на основе значения ячейки

    Квадратичная и кубическая регрессия в Excel с использованием LINEST

    Как удалить макросы из книги Excel?

    Добавить строки ниже последней строки

    Давайте будем гением компьютера.