F# ベースのアドインで Excel の名前付き範囲のデータを取得しようとしています。特定のワークシートだけでなく、ブック内のどこでも名前付き範囲を使用できるようにしたいと考えています。
let xlRange (xl:Microsoft.Office.Interop.Excel.Application, name:string) =
let name_list = xl.ThisWorkbook.Names:Microsoft.Office.Interop.Excel.Names
let mutable result=null
for n in name_list do
let nn = n :?> Microsoft.Office.Interop.Excel.Name
if nn.Name = name then
let range=nn.RefersToRange
result <- range.Value2 :?> obj[,]
result
上記のコードは機能しますが、可変で命令型のスタイルを使用する必要があったため、私は好きではありません。問題は、Excel.Names コレクションがうまく動作しないことです。例えば
let name_seq = Seq.toList name_list
与える
タイプ 'Names' はタイプ 'seq<'a>' と互換性がありません
これを行うためのより F# 慣用的な方法はありますか?