2013-08-30 48 views
1

我一直在使用一個有用的VB腳本,它逐行檢查電子表格,檢查該行中的重複單元格,刪除所有重複內容並將所有的細胞洗過去,所以沒有空白。在超出行/列限制的文件上從命令行運行宏

它看起來像這樣:

Sub StripRowDupes() 
    Do Until ActiveCell = "" 
    Range(ActiveCell, ActiveCell.End(xlToRight)).Select 
    For Each Cell In Selection 
     If WorksheetFunction.CountIf(Selection, Cell) > 1 Then 
      Cell.ClearContents 
     Else 
     End If 
     Next Cell 
     On Error Resume Next 
     Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft 
     ActiveCell.Range("A2").Select 
    Loop 
End Sub 

不過,我現在需要執行相同的操作,只在有48051列,因此CSV文件不會由於其16000列極限載荷在Excel中。

我可以從文件上的命令行運行腳本嗎?

我該怎麼去做這件事?

+1

CSV有多複雜 - 它是否引用了值,並且其中的任何值是否包含逗號?這決定了使用代碼解析每一行而不是在Excel中打開是多麼棘手...... –

回答

1

您可以一次加載.csv的塊,並在每次導入結束時加上前綴或後綴。在每個塊上運行VBA代碼,然後重新加入。

不幸的是,Workbooks.OpenText方法支持從特定行開始導入文本,而不是特定列,因此在運行VBA代碼之前,需要將.csv文件分解爲Excel以外的可管理塊。