VBS работает с макросом Excel, получающим «вызванный объект отключен от своих клиентов» - PullRequest
0 голосов
/ 08 марта 2019

У меня есть скрипт vbs внутри процесса автоматизации.
Этот скрипт запускает макрос Excel, разбивая Excel на несколько файлов в зависимости от номера строки. Что происходит: скрипт создает несколько разбитых файлов, а затем выдает ошибку:

MacroSubSplit.vbs (20, 1) (ноль): вызов пароля и отключение Дай клиент Corrispondenti. то есть "вызванный объект отключился от своих клиентов "

Макрос исходит из этого ответа: Как разбить электронную таблицу на несколько электронных таблиц с заданным количеством строк?

Я изменил его, чтобы открыть файл f.

Public Sub Split_Auto(f As String)
  Dim wb As Workbook
  Dim ThisSheet As Worksheet

  Dim NumOfColumns As Integer
  Dim RangeToCopy As Range
  Dim WorkbookCounter As Integer
  Dim wbDst As Workbook
  Dim RowsInFile
  Dim Prefix As String

  Application.ScreenUpdating = False
'Seleziona file

 Dim fDialog As Office.FileDialog
 Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

 Set wbDst = Workbooks.Open(f)

  'Initialize data
  Set ThisSheet = wbDst.Worksheets("TotalData")
  NumOfColumns = ThisSheet.UsedRange.Columns.Count
  WorkbookCounter = 1
  RowsInFile = 40000                   'how many rows (incl. header) in new files?
  Prefix = "Split"                    'prefix of the file name

  For p = 1 To ThisSheet.UsedRange.Rows.Count Step RowsInFile
    Set wb = Workbooks.Add

'Paste the chunk of rows for this file
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 1, NumOfColumns))
RangeToCopy.Copy wb.Sheets(1).Range("A1")

'Save the new workbook, and close it
strDate = Format(Now, "dd/MMM/yyyy")
wb.SaveAs ThisWorkbook.Path & "\" & Prefix & Format(Now, "yyyy-MM-dd") & "_SplitNum_" & WorkbookCounter
wb.Close

'Increment file counter
WorkbookCounter = WorkbookCounter + 1


 Next p

  Application.ScreenUpdating = True
  Set wb = Nothing

End Sub

Макрос вызывается из VBS-файла

Option Explicit

if WScript.Arguments.Count = 0 then
    WScript.Echo "Missing parameters"
    WScript.Quit    
end if
Dim xlApp, xlBook, File, objShell, input_path

File = WScript.Arguments.Item(0)

Set xlApp = CreateObject("Excel.Application")
set objShell = WScript.CreateObject ("WScript.Shell")
'WScript.Echo(objShell.CurrentDirectory)
input_path = objShell.CurrentDirectory & "\Input\" & File
'WScript.Echo("Input" & input_path)
'close without prompting
xlApp.DisplayAlerts = False
'~~> Change Path here
Set xlBook = xlApp.Workbooks.Open(objShell.CurrentDirectory&"\"&"Macro.xlsm", 0, True)
xlApp.Run "Foglio1.Split_Auto", CStr(input_path)
xlBook.Close False 
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

'WScript.Echo "Finished."
WScript.Quit

Можете ли вы помочь мне найти решение этой проблемы?

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