Импортируйте макрос Excel и запустите его с помощью VBS

Я хотел бы создать скрипт vbs, который откроет документ .xlsx, импортирует макрос и запускает макрос. Для моего использования имя документа .xlsx будет отличаться – поэтому мне может понадобиться шаблон для имени файла. Это то, что у меня есть до сих пор:

Set xl = CreateObject("Excel.application") xl.Application.Workbooks.Open "\\path\Missed_Scans\Report\Report.xlsx" xl.Application.Visible = True x1.VBProject.VBComponents.Import "\\path\Missed_Scans\Missed_Scans.bas" x1.Save xl.Application.run "'Report.xlsx'!Missed_Scans" Set xl = Nothing 

Вышеупомянутый скрипт откроет «report.xlsx», но он, похоже, не правильно импортирует или запускает макрос. Нет необходимости открывать report.xlsx (видимо или иначе), пока макрос импортируется и запускается.

РЕДАКТИРОВАТЬ

Вот макрос:

 Attribute VB_Name = "Module1" Sub Missed_Scans() Attribute Missed_Scans.VB_ProcData.VB_Invoke_Func = " \n14" ' ' Missed_Scans Macro ' ' Sheets("Incomplete_ASINs").Select ActiveSheet.Range("$A$1:$J$52951").AutoFilter Field:=1, Criteria1:="SDF8" Columns("B:D").Select Selection.Copy Workbooks.Add ActiveSheet.Paste Rows("1:1").Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.SaveAs Filename:="\\path\Missed_Scans\Report\Missed_Scans.xlsx" _ , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWindow.Close End Sub 

Благодаря!

Возможно, ваш код может вызывать проблемы из-за использования x1 который не был установлен.

Вы, вероятно, намеревались использовать

 Set x1 = xl.Application.Workbooks.Open("\\path\Missed_Scans\Report\Report.xlsx") 

Но я ожидал, что на самом деле произойдет крах, а не просто неправильно импортировать макрос.


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

 Set xl = CreateObject("Excel.application") xl.Application.Visible = True Dim wb1 Set wb1 = xl.Application.Workbooks.Open("\\path\Missed_Scans\Report\Report.xlsx") Dim wb2 Set wb2 = xl.Workbooks.Add wb1.Sheets("Incomplete_ASINs").Range("$A$1:$J$52951").AutoFilter 1, "SDF8" wb1.Sheets("Incomplete_ASINs").Columns("B:D").Copy wb2.Worksheets(1).Paste wb2.Worksheets(1).Rows(1).AutoFilter wb2.SaveAs "\\path\Missed_Scans\Report\Missed_Scans.xlsx", 51, , , , False wb2.Close wb1.close xl.Quit Set xl = Nothing 

Примечание. Я не эксперт в VBS, поэтому надеюсь, что этот код работает. Дайте мне знать, если это не так.

  • Что открыли мою книгу Excel?
  • Удалите строки X-Y на конкретном листе Excel
  • Свойства ячейки в Excel (используется в VBScript)?
  • Microsoft.ACE.OLEDB.12.0 Current Recordset не поддерживает обновление ошибки, полученной при попытке обновления доступа
  • возьмите разницу между двумя первыми и копией, чтобы сначала отличиться
  • Расстояние между Google Maps API между двумя точками возвращает разные маршруты
  • Открыть / Удалить / Заменить, а затем сохранить в CSV
  • Как отобразить отфильтрованное значение в текстовом поле userform в vba во время выполнения
  • Процесс Excel по-прежнему работает после выхода из приложения в VBScript
  • VBScript - Пользовательский Сортировка таблицы Excel и сохранение ее
  • Запуск различных макросов excel из одного vbscript в разные часы
  • Interesting Posts

    Выбор на основе поиска 2 разных слов в 2 столбцах

    Получение Excel для вставки новой строки для отсутствия дат для нескольких столбцов

    Данные не сохраняются после копирования данных с одного листа на другой с помощью java

    Как прочитать таблицу Excel 2007 с более чем 65535 строками?

    предложения по выбору технологии для конкретного приложения с богатым / толстым клиентом

    Перевести формулу Excel на структурированный английский

    Создание абсолютной, но переменной переменной в VBA

    Я хочу напечатать общее количество отсчетов с исключением в excel с помощью java

    Excel 2016 Powerquery – загрузка модели данных, застрявшей в постоянном обновлении

    Что такое тип файла, который определяет, можно ли открыть его в Excel?

    VBA – GetPivotData – Не удается избежать ошибки времени выполнения 1004

    Сервер Apache – firefox xls.part не удалось сохранить, поскольку исходный файл не мог быть прочитан

    Код Excel VBA для создания определенного уровня масштабирования

    Загрузка пользовательской формы с информацией о записи выбранного элемента (как сделать быстрее)

    Обработчик ошибок в VBA 2016

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