VbScript搜索特定标头并选择整个列

时间:2015-08-28 11:33:23

标签: excel vbscript

我正在编写一个VbScript来删除通过参数删除的excel文件中的特定列。 excel文件的第1行是列的标题。这是我当前的代码,用于在标题中查找特定字符串。

Set objExcel = CreateObject("Excel.Application")
If WScript.Arguments.Count = 0 Then
    WScript.Echo  "Drop excel files on this script"
Else
    objExcel.Visible = True
    objExcel.Workbooks.Add(WScript.Arguments.Item(0))
    Set FoundCell = objExcel.Range("A1:C1").Find("Sales Figures")

    '* Select the entire column of FoundCell and remove it

End If

我的第一个问题是我必须手动指定要搜索的标题范围(A1:C1)。有没有办法自动完成(A1:X1) - 其中X是Excel工作表中的最后一列。

第二,我怎样才能删除整个FoundCell专栏?

1 个答案:

答案 0 :(得分:1)

我认为这可能会有所帮助。您可以使用Sheet对象的UsedRange属性仅选择包含数据的单元格。这意味着您不需要明确列引用。

Cells(1)Find()限制为UsedRange的第一行。

我在最后添加的位只是正确关闭Excel。

Option Explicit

dim objExcel, book, FoundCell
Set objExcel = CreateObject("Excel.Application")
If WScript.Arguments.Count = 0 Then
    WScript.Echo  "Drop excel files on this script"
Else
    objExcel.Visible = True
    set book = objExcel.Workbooks.Add(WScript.Arguments.Item(0))
    ' assume we're looking in the activesheet
    Set FoundCell = book.ActiveSheet.UsedRange.Cells(1).Find("Sales Figures")

    if not IsNull(FoundCell) then
        '* Select the entire column of FoundCell and remove it
        book.ActiveSheet.UsedRange.Columns(FoundCell.Column).Delete
        ' book.SaveAs "removed.xlsx"
    end if

End If
' close up avoiding any "save changes?" dialog
for each book in objExcel.Workbooks
    book.saved = true
next
objExcel.quit