Я пытаюсь преобразовать программу VBA в VbScript, чтобы запустить ее из cmd.Я создал программу на VBA, которая получает книгу Excel и ячейки с пометкой um, сохраняя ее содержимое во всех вновь созданных ячейках без пометок.объяснение: объединенные нули находятся в одной объединенной ячейке, а один - в не объединенной ячейке
[[0] [0]] [0] [0]] [1] [1] [1]
После функции я ожидаю, что результат будет выглядеть следующим образом:
[0] [0] [0] [0][1] [1] [1]
каждое значение в одной ячейке
Я написал скрипт VBA, который делает это
эта функция занимает один лист иудалить все ячейки, сохранив значения для всех вновь сформированных ячеек
Sub UnMergeFill(ByVal ws As Worksheet)
Dim cell As Range, joinedCells As Range
For Each cell In ws.UsedRange
If cell.MergeCells Then
Set joinedCells = cell.MergeArea
cell.MergeCells = False
joinedCells.Value = cell.Value
End If
Next
End Sub
эта функция берет первую функцию и применяет ее ко всем листам в рабочей книге
sub UnMergeFillAllSheets()
Dim ws As Worksheet
for Each ws In Worksheets
UnMergeFill ws
Next
End Sub
когда я конвертирую его в VBScript, он выглядит следующим образом:
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Dim myworkbook, worksheetcount,cell
Set myworkbook = objExcel.Workbooks.Open("C:\Users\sm\Documents\work\try\try.xlsx")
worksheetcount = myworkbook.Worksheets.Count
Msgbox ("there are:"&worksheetcount&" sheets")'testing
set cell = CreateObject("Range")
For i= 1 To worksheetcount
set ws = objExcel.Worksheets(i)
ws.Activate
for each cell in ws.UsedRange
**take all merge cells and un-merge them**
Next
Next
моя проблема в том, что мне нужно ссылаться на диапазон объединенных ячеек, когда я пытаюсь создать объект диапазона, который я получаюошибка:
компонент ActiveX не может создать объект: 'Range'
Я знаю, Range существует, потому что я использовал TypeName (ws.UsedRange), а объект - rangeТип.
Спасибо за васr help