- ベストアンサー
EXCEL VBAからEXCELファイルを非表示で開きたい
こんにちは。 EXCEL VBAから、別のEXCELのファイルを非表示で参照し、 セルの内容を取得したいのですが、やり方がわかりません。 どなたかお知恵をお貸しください。 できれば、具体的な記述方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
○別のBookを開いて参照する例です。最後は閉じています。開いた状態は見えないはずです。 標準モジュールに貼りつけます。(当方、Excel97です) ○これとは別に、別のBookを開いた状態で、算式で参照しておけば開く必要はありません。 特定のセルを参照するならこちらのほうが簡単です。 Sub SansyoBook() Dim xlsFilePath As String '別のExcelBookのパス Dim xlsFileName As String '別のExcelBookのファイル名 Dim myBk As String '呼び出すBook名 Dim otBk As String '別のBook名 myBk = ThisWorkbook.Name Application.ScreenUpdating = False ActiveCell.Activate '///// パスとファイル名をセットする ///// xlsFilePath = "C:\・・・・\・・・・\" '自分でセットします xlsFileName = "別ブックBook1.xls" '自分でセットします '///// 別Bookを開く ///// Workbooks.Open xlsFilePath & xlsFileName otBk = ActiveWorkbook.Name '///// 元のBookのほうから別Bookのセルを参照 ///// Workbooks(myBk).Activate With Workbooks(otBk).Worksheets("Sheet1") Range("A1") = .Range("A1") 'セルA1を参照する Range("A2") = .Range("B2") 'セルB2を参照する End With '///// 別Bookを閉じる ///// Workbooks(otBk).Activate Workbooks(otBk).Close Workbooks(myBk).Activate Application.ScreenUpdating = True End Sub
その他の回答 (2)
- TTak
- ベストアンサー率52% (206/389)
開くexcelファイルがデータのような型式でしたら、”外部データの取り込み”で、ファイルを開くことなく持ってこれます。 メニューバーの[データ]>[外部データの取り込み]>[新しいデータベースクエリ]で、Excel File を選択>参照するブックを選択>シートを選択>フィールドを選択・・・の手順で参照を登録していきます。これをマクロの自動記録で記録してみてください。 With ActiveSheet.QueryTables.Add(Connection:= _ "ODBC;DSN=Excel Files;DBQ="\\***\*.xls"; _ "DefaultDir=="\\***";_ ~省略~ End With こういう感じになります。 ただ、私もNo1.の方の回答の方法をお勧めします。
補足
ありがとうございます。 処理の流れとしては、入力フォームを開いたとき、別フォルダの別Bookの値を取得し、それをフォームのComboBoxのリストに追加するという処理です。
- nek784
- ベストアンサー率35% (145/411)
下記の表現はどうでしょうか。 この命令を使った後にファイルを開くとタスクバーに 開いたファイルが出るだけでファイル内容は表示されません。 ○非表示する場合 Application.ScreenUpdating = False ○非表示を戻す場合 Application.ScreenUpdating = True はずしていたらごめんなさい。
補足
ありがとうございます。 自分もApplication.ScreenUpdating = False にしているんですが、なぜか False になりません。 Excelの設定か何かありますか?もし知っていたら教えてください。
補足
ありがとうございます。 自分もほぼ同じコードになってるんですが、Application.ScreenUpdatingがなぜか False になりません。 処理の流れとしては 入力フォームを開いたとき、別フォルダの別Bookの値を取得し、それをフォームのComboBoxのリストに追加するという処理です。 Excelの設定か何かありますか?もし知っていたら教えてください。