2012-10-24 105 views
2

我試圖打開AutoFilter爲將使用數據的用戶。F#Excel Range.AutoFilter()失敗

open Microsoft.Office.Interop.Excel 

let xl = ApplicationClass() 
xl.Workbooks.OpenText(fileName...) 
let wb = xl.Workbooks.Item(1) 
let ws = wb.ActiveSheet :?> Worksheet 

let rows = string ws.UsedRange.Rows.Count 

// AutoFilter method of Range class failed. 
ws.Range("A7:I" + rows).AutoFilter() |> ignore 

感謝您提供的任何幫助。

+0

不帶參數的呼叫應該只是切換AutoFilter下拉箭頭的顯示,這是我所有的。 –

回答

2

根據the documentation,您需要將5個參數傳遞給AutoFilter

未指定的參數可以由System.Reflection.Missing.Value填充。

喜歡的東西

ws.Range("A7:I" + rows).AutoFilter(1, System.Reflection.Missing.Value, 
            Excel.XlAutoFilterOperator.xlAnd, 
            System.Reflection.Missing.Value, true) 
|> ignore 

應該工作。

+0

公平地說,Intellisense和文檔均指出所有參數都是可選的,文檔指出省略所有參數只是簡單地切換AutoFilter下拉箭頭的顯示,這正是我所追求的。我不得不說,所以我不覺得自己是一個完全白癡。 :)'Type.Missing'在我的機器上不起作用(命名空間或模塊'Type'沒有定義),所以我用''「替換了它們,然後編譯。不幸的是,它導致整個範圍過濾沒有任何顯示。我也嘗試過''「>>''每個文檔具有相同的結果。 –

+0

對不起;我不熟悉Excel互操作。 'Type.Missing'應該是'System.Reflection.Missing.Value'。我不知道爲什麼沒有東西可以顯示,你最好的選擇是改變選項,並確保你有真實的數據進行過濾。 – pad

+0

啊!那樣做了!非常感謝! –