VBA для получения открытой двоичной книги Excel

#excel #vba #ms-access

#excel #vba #ms-access

Вопрос:

У меня есть форма MS Access, которая открывает двоичный файл Excel (.xlsb) с другого веб-сайта. Я пытаюсь проверить все открытые файлы Excel пользователя, чтобы работать с правильной книгой.

Выполняя приведенный ниже цикл для открытого, но не сохраненного файла Excel, GetObject не находит только что открытую книгу. Этот код находит другие файлы Excel, которые у меня, возможно, уже открыты.

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

Есть ли лучший способ для меня записать только что открытое имя файла? В новом файле Excel мне нужно отфильтровать данные с определенных вкладок Excel и добавить эти данные в таблицы Access.

 Dim xlApp As Excel.Application
Dim strWBList As String
strWBList  = ""
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err.Number = 0 Then
   Dim xlWB As Excel.Workbook
   For Each xlWB in xlApp.Workbooks
      If Len(strWBList) > 0 Then
         strWBList = strWBList amp; ","
      End If
      strWBList = strWBList amp; xlWB.Name
   Next xlWB
   Set xlApp = Nothing
   Set xlWB = Nothing
End If
MsgBox strWBList
  

Комментарии:

1. Опубликованный вами код предоставляет вам Excel.Application объект, не более того. Что вы имеете в виду, когда этот код возвращает информацию об этом файле ?

2. И снова — спасибо за ваш комментарий, я изменил вопрос. Я думал, что причина, по которой мой код не работал, была как-то связана конкретно с двоичными файлами Excel, но сейчас я не уверен.

3. Спасибо. У меня есть форма MS Access, которая открывает двоичный файл Excel (.xlsb) — если ваша программа открывает файл, то это точка, где вы должны получить указатель на книгу. Можете ли вы добавить код, который открывает файл, к вашему вопросу?

4. Установите xlWB = xlApp.Workbooks. Открыть (имя файла в виде строки)

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