2016-10-25 9 views
1

私は以下のコードでfileNameによってcurrentWrkBookを得る:Excelウィンドウを表示せずにファイル名でブックを開く方法は?

using Excel = Microsoft.Office.Interop.Excel; 
... 
Excel.Workbook currentWrkBook = Excel.Application.Workbooks.Open(fileName); 
... 

結果がOK(上記のステートメントを実行したときには、ファイル名[D:/DataProject/Resources.xlsm]が開いている)を取得:

enter image description here

をさて、オープンファイルなしでfileNameでcurrentWrkBookを入手したいと思います。

これは可能ですか?これらについてのヒントは大きな助けになります。前もって感謝します。

+0

これで何を達成しようとしていますか? –

+0

実行するたびにfileNameが開いて迷惑なので、私はそれを隠しておきたい。 – MinhKiyo

+0

だから、あなたはまだファイルを開くだけで、ユーザーからExcelアプリケーションを隠したいと思う。この場合、[Application.Visible](https://msdn.microsoft.com/en-us/library/office/ff198119.aspx)プロパティをfalseに設定します。また、この質問は役に立つかもしれません:http://stackoverflow.com/questions/8179835/c-sharp-show-hide-excel-window –

答えて

1

は、新しいApplicationオブジェクトからあなたのファイルを開こう:それは可能である

var excel = new Excel.Application(); 
var workbook = excel.Workbooks.Open(filename); 

、すでに実行中のインスタンスをエクセル持っていること、新しいブックにも見えるようになります。

EDIT:場合あなたはすでにあなたがそれをby name得ることができます開いているワークブックのための参照を取得する必要がある場合:

Excel.Workbook currentWrkBook = Excel.Application.Workbooks[fileName]; 
+0

Open()メソッドを使用すると、確実にfileNameが開かれるはずです。 初めて開いた後、Application.Visibleプロパティをfalseに設定すると、非表示になります。 そうする方法はないと思います。 – MinhKiyo

+0

確かに、これを行う方法があります:)より具体的にする必要があります。このファイルは既に開いていますか?あなたのアプリケーションや別のアプリケーションによって開かれましたか?また、私は自分の答えを更新しました。編集を参照してください。 –

+0

私の問題は、まだ開いていないファイル名があることです。 Excelアプリケーションは別のファイルを開いています。 ^^ 私は理解しています。あなたの努力に感謝! – MinhKiyo

0

を私はファイルを開くことによってこれを行うことができるように見えます読み取り専用モード。私にとっては、データを読むだけで十分です。

var oXL = new Microsoft.Office.Interop.Excel.Application(); 
oXL.Visible = false; 

Workbook Wbook = oXL.Workbooks.Open(txtFileName.Text, ReadOnly: true, Password: "password"); 

var sheet = Wbook.Worksheets[1]; 

foreach (Range row in sheet.UsedRange.Rows) 
{ 
    var firstName = sheet.Cells[row.Row, 1].Value2, 
    var lastName = sheet.Cells[row.Row, 2].Value2 
} 

ReadOnlyパラメータをfalseに切り替えると、Excelによってファイルが目に見えるように表示されます。

関連する問題