一回も披露したことのない豆知識

こんにちは。
EXCEL VBAから、別のEXCELのファイルを非表示で参照し、
セルの内容を取得したいのですが、やり方がわかりません。

どなたかお知恵をお貸しください。
できれば、具体的な記述方法を知りたいです。

A 回答 (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

この回答への補足

ありがとうございます。
自分もほぼ同じコードになってるんですが、Application.ScreenUpdatingがなぜか False になりません。
処理の流れとしては
入力フォームを開いたとき、別フォルダの別Bookの値を取得し、それをフォームのComboBoxのリストに追加するという処理です。
Excelの設定か何かありますか?もし知っていたら教えてください。

補足日時:2002/07/12 18:53
    • good
    • 2

開くexcelファイルがデータのような型式でしたら、”外部データの取り込み”で、ファイルを開くことなく持ってこれます。


メニューバーの[データ]>[外部データの取り込み]>[新しいデータベースクエリ]で、Excel File を選択>参照するブックを選択>シートを選択>フィールドを選択・・・の手順で参照を登録していきます。これをマクロの自動記録で記録してみてください。
With ActiveSheet.QueryTables.Add(Connection:= _
    "ODBC;DSN=Excel Files;DBQ="\\***\*.xls"; _
    "DefaultDir=="\\***";_
~省略~
End With
こういう感じになります。
ただ、私もNo1.の方の回答の方法をお勧めします。

この回答への補足

ありがとうございます。
処理の流れとしては、入力フォームを開いたとき、別フォルダの別Bookの値を取得し、それをフォームのComboBoxのリストに追加するという処理です。

補足日時:2002/07/12 18:58
    • good
    • 0

下記の表現はどうでしょうか。


この命令を使った後にファイルを開くとタスクバーに
開いたファイルが出るだけでファイル内容は表示されません。
○非表示する場合
Application.ScreenUpdating = False
○非表示を戻す場合
Application.ScreenUpdating = True
 はずしていたらごめんなさい。

この回答への補足

ありがとうございます。
自分もApplication.ScreenUpdating = False にしているんですが、なぜか False になりません。
Excelの設定か何かありますか?もし知っていたら教えてください。

補足日時:2002/07/12 18:50
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報