我正在编写一个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专栏?
答案 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