

No.2ベストアンサー
- 回答日時:
ご質問の内容を取り違えていましたらすみません。
状況・課題の確認も兼ねて冗長な説明になるかと思いますがご容赦ください。
まず、開いているブックへの参照は
A:=max([Sample.xls]Sheet1!$k$2:$k$1250)
といった形になりますよね。
ここでリンク元のブックを閉じると、
数式は自動的に
B:=max('D:\***\[Sample.xls]Sheet1'!$k$2:$k$1250)
といった形に変わります。
この状態であれば、閉じたブックの値を参照することができます。
また、Bの形の数式を直接入力した場合でも
閉じたブックの値を参照できます。
問題は、対象のブックが大量にある場合に
Bの形の数式を順次入力していくのは現実的でない
ということだろうと思います。
対象ブックが開いている場合には、indirectを使用して
C:=max(INDIRECT("'"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250"))
とすれば参照を動的に生成することができますが、
indirectでは閉じたブックを参照することはできません。
で、ようやく対策ですが、
Bの形の数式自体を文字列として生成し、
D:="=max('"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250)"
メモ帳等を経由して貼り付けることで、
イの形の数式を一気に入力することができます。
(エクセルからエクセルへ直接の値貼り付けや数式貼り付けでは不可)
ただし、対象のブックが動いた場合には
その都度参照を貼りなおす必要がありますので、
対象のブックが頻繁に動くような場合には、
マクロを利用するほかはなかろうと思います。
1.#1さんの方法で直接参照する。
2.「整理表」の変更をイベントで取得して参照数式を書き換える。
3.リンク元ブックをバックグラウンドで開いてしまう(!)
といったアプローチが考えられます。
> indirectでは閉じたブックを参照することはできません。
→ indirectでなければ閉じたブックを参照することができますが、
エクセルからエクセルへ直接の値貼り付けや数式貼り付けでは不可
なので、メモ帳等を経由して一気に貼り付ける。
と理解しました。ここで、「メモ帳等を経由して」とはどういうことでしょうか?
なお、マクロについて、#1さんのアドバイスを見よう見真似で試行錯誤中です。
ありがとうございました。
No.4
- 回答日時:
' フォルダ内のファイル名で文字列作成
Option Explicit
Dim strLine
Dim Fs
Dim objOutput
Dim oTarget
Dim oFile
Dim FileEx
Dim t
Const ForWriting = 2
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set objOutput = Fs.OpenTextFile("Maxresult.csv", ForWriting, True) ' Maxresult.csvを書き込みモードで開く
t = 0
' 現在のフォルダ内のファイル名を格納
Set oTarget = Fs.GetFolder(".")
For Each oFile In oTarget.Files 'すべてのファイルに繰り返す
FileEx = Fs.GetExtensionName(oFile) ' ファイル名から拡張子を抜き出す
If FileEx = "xls" Then ' 拡張子を比較 (.xls)のとき処理
strLine = ""
'ここで必要な文字列(関数式)を作成します
strLine = oFile.Name & "," & "=MAX('" & oTarget.Path & "\[" & oFile.Name & "]Sheet1'!K2:K1250)"
objOutput.WriteLine strLine ' 出力ファイルに書き出す
t = t + 1
End If
Next
objOutput.Close
MsgBox "処理終了 Excel 数 = " & t
---------------------------------------------------------
VBScript でちょこっと作ってみました。
フォルダ数が少なければ、たぶん使いやすいとおもいます
(ひとつのフォルダにファイルが沢山あるとき)
スクリプトの処理内容
対象のフォルダ内のすべてエクセルのファイル名とパスを収得して
「ファイル名」と「=MAX('D:\***\[*****.xls]Sheet1'!$k$2:$k$1250)」
のテキスト形の文字列をCSVの結果に出力します
使い方
先頭の Option Explicit から MsgBox の最後までコピーして
メモ帳などに貼り付けて保存してください。(名前はなんでもいいです)
そして 拡張子を(.txt)から(.vbs)に変更します
アイコンの形がメモ帳からSの形をしたものに変わります。
TESTフォルダをデスクトップにでも作り、そこにエクセルファイルをコピーして
同じTESTフォルダにSの形をしたアイコン「(.vbs)のファイル」を入れてください
で、Sの形をしたアイコンをダブルクリックするとテキストの形で関数文字列を作り
(Maxresult.csv)のファイルができます。
CSVファイルをエクセルで開くと関数が値を収得してきます。
フォルダ数が多いと使いにくいと思います。
役に立つかわかりませんが、

No.3
- 回答日時:
#2です。
説明が判りにくかったようですみません。
indirectの説明は余計でした。
indirectでなければ(式Bの形であれば)
閉じたブックを参照することができますが、
式Bを1000パターンも手打ちするのは大変です。
そこで、数式Dを使って1000パターンの数式Bを文字列として作ります。
しかし数式Dが返す「数式」はあくまで文字列なので、
そのままでは求める値を返しません。
文字列扱いになっている「数式」を普通の数式としてExcelに認識させる方法として、
文字列の「数式」をコピーして、いったんメモ帳などに貼り付け、
それを再度コピーして、Excelに貼り付け直す方法があります。
「メモ帳等を経由して一気に貼り付ける。」というのはそういう意味でした。
以下繰り返しになりますが、まとめです。
(私の理解では)ご質問の内容には2つの課題(条件)があります。
条件1.「閉じたブックの内容を参照したい」
条件2.「大量のブックの内容を参照したい」
もし条件1だけであれば、
B:=max('D:\***\[Sample.xls]Sheet1'!$k$2:$k$1250)
の形で数式を入力すれば解決します。
(閉じたブックの内容を参照できます)
しかし、大量のブックに対してこの形の数式をそれぞれ入力していくのは困難です。
つまり、この方法は条件2を満足しません。
条件2だけであれば、
C:=max(INDIRECT("'"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250"))
といった形で数式を入力してフィルすれば解決します。
(「整理表」から順次参照元を取得して参照を機械的に生成できます)
しかし、この方法では閉じたブックを参照することは出来ません。
つまり、この方法は条件1を満足しません。
そこで、条件1・2を同時に満足する方法として提示したのが、
1.Bの形の数式をいったん文字列として1000パターン生成する。
D:="=max('"&A1&":\"&B1&"\["&C1&".xls]Sheet1'!$k$2:$k$1250)"
2.1で生成した文字列を数式として入力しなおす。
1で作った1000パターンの「数式」をメモ帳に貼り付ける
↓
それを再度エクセルに貼り付ける。
↓
1000パターンの「数式」が数式としてExcelに認識され、値を返す
という方法です。
乱長文失礼しました。
No.1
- 回答日時:
マクロがすこし分かれば、出来ると思いますが、
がんばって作ってみてはどうでしょう。
ブックを開かないでセルのデータを読む
http://officetanaka.net/excel/vba/tips/tips28.htm
マクロがわからないのですが、(処理の手順をどこに書くのか、どこに記録してどう起動するのか)この際がんばってみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) セルの値と同じ名前のシートのセルの結合を解除する方法を教えてください 3 2022/10/03 10:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) 3つのエクセルをそれぞれのシートのセルに反映させたいときはどうしたらいいでしょうか? 例えば①シート 4 2023/04/25 20:13
このQ&Aを見た人はこんなQ&Aも見ています
-
別ファイルを開かず、INDIRECT関数を使用せずに、別ファイルのデータを求めたい
Excel(エクセル)
-
開いてないブックへの参照の変更方法
Excel(エクセル)
-
リンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)
Excel(エクセル)
-
-
4
エクセル関数>参照ファイル名をセルから呼び出す
Excel(エクセル)
-
5
excelのindirect関数の別ブック参照について質問です。
Excel(エクセル)
-
6
VLOOKUP関数で開いていないファイルを参照
Access(アクセス)
-
7
ファイルを閉じたままの外部参照で最終行の行数取得
Visual Basic(VBA)
-
8
エクセルで別ブックのセルを参照する式の内部
Excel(エクセル)
-
9
外部ファイルを開かず参照したい
Excel(エクセル)
-
10
INDIRECT関数の代替方法は?
Excel(エクセル)
-
11
エクセルで相対パスの書き方を教えてください
Excel(エクセル)
-
12
エクセルのINDIRECT関数の#REFエラーの対応について
Excel(エクセル)
-
13
VLOOKUP,INDEX,MATCH 関数 開いていないファイルより複数の値を参照できない
Excel(エクセル)
-
14
エクセルで別シートからの最大値の反映
Excel(エクセル)
-
15
エクセルで他のシートを動的に参照する(シート名だけ)
Excel(エクセル)
-
16
リンクをアップデートするしないの自動化
Excel(エクセル)
-
17
エクセルで参照しているデータを常に最新の状態にしたい
Excel(エクセル)
-
18
別ファイルを参照しながらシート名を動的に
Excel(エクセル)
-
19
Excel 例A(1+9) のように番地のたし足し算の方法を教えてください
その他(Microsoft Office)
-
20
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】アクティブセルの時...
-
VBAでブックを非表示で開いて処...
-
エクセルの関数 ENTERを押...
-
エクセルを共有するとPCによっ...
-
Excelの新しい空白のブックを開...
-
Excelで複数ブックの同一セルに...
-
フォルダ内の複数ファイルから...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルを開くと最大化などの...
-
別ブックから入力規則でリスト...
-
Excelファイルをダブルクリック...
-
WorkBooksをオープンさせずにシ...
-
参照したいブックのパス名に"["
-
エクセルでウィンドウの枠固定...
-
エクセルで別ブックをバックグ...
-
Excel起動時に特定のワークシー...
-
エクセル2016です。「ブッ...
-
フォルダ内の複数ファイルから...
-
エクセルファイルをオープンし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルの関数 ENTERを押...
-
Excelの警告について
-
Excelファイルをダブルクリック...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
Excelでブックの共有を掛けると...
-
Excel(2010)のフィルターが保...
-
Excelで複数ブックの同一セルに...
-
エクセルファイルを開かずにpdf...
-
エクセルにおける,「ブック」...
-
同じフォルダへのハイパーリン...
-
エクセルで別ブックをバックグ...
-
フォルダ内の複数ファイルから...
-
VBA バックグラウンドで別ブッ...
-
エクセルでウィンドウの枠固定...
-
ブックのピボットを別ブックに...
-
フォルダ内の複数ファイルから...
-
エクセルで50行ごとに区切った...
おすすめ情報