次の PowerShell スニペットは、OleDbConnection.GetOleDbSchemaTable()を介して、すべてのワークシートと名前付き範囲を Excel スプレッドシートに一覧表示します。
$file = "C:\Users\zippy\Documents\Foo.xlsx";
$cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$($file)`";Extended Properties=`"Excel 12.0 Xml;HDR=YES`";";
$cn = New-Object System.Data.OleDb.OleDbConnection $cnStr;
$cn.Open();
# to list the sheets
$worksheets = $cn.GetOleDbSchemaTable([System.Data.OleDb.OleDbSchemaGuid]::Tables,$null);
$cn.Close();
$cn.Dispose();
$worksheets | Format-List;
ただし、これはテーブル (Excel 2003 ではリストと呼ばれます) や、リストを参照する名前付き範囲はリストしません。
タイプが Procedures または ViewsのOleDbSchemaGuidを渡すと、次のメッセージとともにMethodInvocationExceptionが返されます。Operation is not supported for this type of object.
接続文字列または制限パラメータを調整してテーブルを一覧表示することは可能ですか?