2
次のPowerShellスニペットはOleDbConnection.GetOleDbSchemaTable()を経由してExcelスプレッドシート内のすべてのワークシートや名前付き範囲を一覧表示されます:リストは、OleDbConnectionオブジェクトとテーブルをエクセル:: GetOleDbSchemaTableメソッド()
$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)、またはリストを参照する名前付き範囲。
私はタイプのプロシージャまたはビューのOleDbSchemaGuidを渡すと、私はOperation is not supported for this type of object.
のメッセージでMethodInvocationExceptionを取得するには、接続文字列や制約のパラメータで微調整することにより、テーブルを一覧表示するには、このことは可能ですか?
を私はC#のWinFormsのアプリケーションで同様の問題がありました。私はそれが異なるコードであることを知っていますが、それでも助けになるかもしれません。 GetOleDbSchemaTableを呼び出してテーブルを見ると、Worksheetsだけでなく、フィルタテーブルなどの内部的に使用されるテーブルも返されることに気付くでしょう。「このタイプのオブジェクトでは、操作はサポートされていません"Excelの内部テーブルを使用して操作しようとすると、メッセージが表示されます。この記事を見る... http://stackoverflow.com/questions/10654433/how-to-get-list-of-only-excel-worksheet-names-in-excel-using-oledb-filter-out-n – Jim