2011-05-20 20 views
3

いくつかのExcelファイルを開き、それらのファイルを更新するプロセスを作成しようとしています。C#からExcel ODBC接続を開く

excel.Visible = true; 
    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open("Testfile.xlsx"); 

    workbook.RefreshAll(); 
    workbook.Save(); 

問題は、これらのワークシート上の接続は、リフレッシュを完了する前に、保存しようとしているバックグラウンドでリフレッシュするように設定されていることである:私は、コードを持っています。私はBackgroundQuery = falseを設定する必要があることを知っていますが、既存の接続にアクセスする方法はわかりません。どんな助けもありがとうございます。

答えて

0

私はずっとCを知らないので、構文が間違っているかもしれないが、それはあなたが望むworksheet.querytableオブジェクトです。だから私は、この特定のコードを動作させるために管理していませんでした

Microsoft.Office.Interop.Excel.Worksheet ws = workbook.worksheets(1) 
Microsoft.Office.Interop.Excel.Worksheet qt = ws.querytables(1) 

ws.QueryTables(1).RefreshOnFileOpen = False 
ws.QueryTables(1).BackgroundQuery = False 
+0

だから私は動作するように、この特定のコードを取得するために管理していませんでしたが、試行錯誤によって私がいることを考え出し: foreachの(workbook.ConnectionsでMicrosoft.Office.Interop.Excel.WorkbookConnection I) {システム。 Console.WriteLine(i.Name); i.OLEDBConnection.BackgroundQuery = false; } が動作します。 – dseisun

1

試行錯誤の結果、私はそれを知りました:

foreach (Microsoft.Office.Interop.Excel.WorkbookConnection i in workbook.Connections) 
     { System.Console.WriteLine(i.Name); 
     i.OLEDBConnection.BackgroundQuery = false; 
     } 

作品。

関連する問題