如何在VBscript中定义范围对象

时间:2019-05-30 13:07:02

标签: excel vbscript

我试图将VBA程序转换为VbScript,以便从cmd运行它。 我在VBA中创建了一个程序,该程序可以获取excel工作簿和um-marged单元格,同时将其内容保留在所有新形成的未标记单元格中。 说明: 秃顶的零在一个合并的单元格中,一个在一个非合并的单元格中

[[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组件无法创建对象:“范围”

我知道范围存在,因为我使用了TypeName(ws.UsedRange)并且对象是范围类型。

谢谢您的帮助

1 个答案:

答案 0 :(得分:1)

您正在使用后期绑定。正确的格式应该是Dim cell,并将其设置为Range对象。如果您尝试使用Range对象无法执行的操作,将不会获得任何调试帮助,就像您将无法获得IntelliSense一样。

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

For Each ws In objExcel.Worksheets
    ws.Activate
    For each cell in ws.UsedRange.Cells 'Loop through Cells, not Rows or Columns

        **take all merge cells and un-merge them**
    Next cell
Next ws