Импортируйте макрос 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, поэтому надеюсь, что этот код работает. Дайте мне знать, если это не так.

  • Ошибка переполнения vbscript
  • Замена значения в ячейке другим
  • Использование Excel.Application в ASP, где Excel установлен на клиентских машинах вместо сервера
  • Свяжите лист Excel с таблицей в MS Access - с помощью VBScript
  • VBScript: вызов строки состояния объекта приложения Excel, отклоненный вызываемым пользователем
  • VBS или VBA для нескольких файлов Excel?
  • Как расширить диапазон объединенных ячеек, сохраняя форматирование с помощью VBScript
  • Копирование данных из одной таблицы в другую
  • asp vb сохранить файл excel в определенном пути
  • Индивидуально (а не как пакет) отправляет одно сообщение в список адресов, хранящихся в Excel
  • Код VBScript для открытия файла Excel
  • Interesting Posts

    vLookup из выделенных ячеек

    Экземпляры Excel с расширенным содержимым основаны на значении другой ячейки

    Как я могу использовать VBA для выполнения VLookup для сравнения двух разных таблиц и удаления строк, в которых соответствуют таблицы ячеек?

    vba получить значение из закрытой книги?

    хранить данные из формы, используя только HTML

    Ошибка при попытке загрузить двойной список в Yii2

    Каков наилучший способ хранения настроек на основе рабочей таблицы?

    Копирование динамических строк из одного листа в другой в VBA

    Объедините, если есть значение

    Что приводит к тому, что файл excel открывается только для чтения?

    Объектная переменная или С заблокированной переменной блока Ошибка при загрузке базы данных

    Код Vba для частичной передачи данных Excel

    Пытаемся объединиться в dataframe, но он продолжает создавать новые столбцы

    Копирование текста в буфер обмена с помощью VBA

    Чтение файла Excel в формате FormCollection MVC

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