使用VBS对excel中的列进行排序,同时保持扩展选择

时间:2016-12-09 19:51:30

标签: excel vbscript

我有一个创建的csv文件,我想对列进行排序但是要扩展选择,否则数据不准确。示例:列A是服务器名称,列B是安装的修补程序日期,列C是安装它的人。

使用以下代码时,它会将列B排序为已安装的日期,但不会将该日期保留在其他列中。

      Const xlAscending = 1 
Const xlDescending = 2 
Const xlYes = 1 

Set objExcel = CreateObject("Excel.Application") 
Set objWorkbook = objExcel.Workbooks.Open("c:\users\x\desktop\hotfixes.csv") 'insert link or URL to sharepoint document.


Set objRange = objworkbook.worksheets(1).columns(2) 
objRange.Sort objrange.cells(1,1), xlAscending, , , , , , xlYes 





objExcel.DisplayAlerts = False 
objworkbook.save 
objworkbook.close 
objexcel.quit 

我附加了一个链接到我使用的示例csv文件。有谁知道我需要输入什么命令来保持整个选择。

https://static.spiceworks.com/attachments/post/0017/4443/hotfixes.txt

1 个答案:

答案 0 :(得分:1)

它完全按照您的要求进行操作 - 它对第2列进行排序。它的工作原理与打开文件时相同,手动突出显示一列然后点击一列快速排序按钮 - 它只对突出显示的范围进行排序。

尝试类似:

With objworkbook.worksheets(1)
    Set objRange = .range(.columns(1),.columns(3))
    objrange.sort objrange.cells(1,2), xlascending, , , , , , xlYes 
End With

这会将您的排序范围扩展为包含列1 - 3,然后将其键入以对第二列进行排序。它应该可以解决您的问题。