Исправление «Неизвестная ошибка времени выполнения» код 800A03EC в VBScript для запуска макроса без открытия Excel - PullRequest
1 голос
/ 27 июня 2019

Я пытаюсь создать и запустить VBScript для запуска созданного мной макроса (PVT_Paste_Macro.xlsm) в файлах Excel, не открывая каждый отдельный файл Excel (у меня 528 файлов!). Вот мой код:

Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\Owner\Desktop\PVT_Paste_Macro.xlsm'!Module1.PVT_Paste_Macro"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

После запуска кода я получаю следующую ошибку:

Script: C:\Users\Owner\Desktop\VBA for macros - PVT.vbs
Line:   2
Char:   1
Error:  Unknown runtime error
Code:   800A03EC
Source: Microsoft VBScript runtime error

Я запускаю сценарий, пока файл макроса открыт.Файл макроса, (тестовый) файл Excel, на котором я хотел бы запустить макрос, и сценарий VBS находятся на рабочем столе.

Кто-нибудь может помочь?Спасибо.

1 Ответ

2 голосов
/ 27 июня 2019

Код не работает, потому что ему не нравится тот факт, что файл excel, содержащий код, открытый перед выполнением кода:

enter image description here

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

  1. Создан файл Script.xlsm на рабочем столе.
  2. В Modul1 добавлено следующее:

Sub FromExcel()
    MsgBox "FROM EXCEL"
End Sub
Вызывается это с Script.vbs вот так:
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\UserName\Desktop\Script.xlsm'!Modul1.FromExcel"
objExcel.Visible = True 'Or "False", depending on what you want.
objExcel.Application.Quit
Set objExcel = Nothing
Прибыль

Для обхода , если вы хотите запустить «макрос» из открытого файла Excel, тогда что-то вроде GetObject будетбыть полезным:

Set objExcel = GetObject("C:\Users\UserName\Desktop\xl.xlsm")
objExcel.Application.Run "Modul1.FromExcel"
objExcel.Application.Quit
Set objExcel = Nothing

Однако, это, вероятно, проблема XY - должен быть лучший способ сделать всю историю, например, запустить «макрос» из одного независимого Excelфайл, который открывает другие файлы Excel на рабочем столе и обрабатывает их, без необходимости VBScript.Вероятно, проверьте следующее:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...