Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 11 Home : Microsoft 365)
参照先ファイルを開くことなく実行は無理でしょうか
投稿日時: 25/01/22 14:49:05
投稿者: 春麗

フォームにIDを入力して実行ボタンをクリックすると,
該当する名前や住所等をフォームに表示させる様にマクロを作成し,問題なく動くのですが,
参照するファイルは必ず開く様にしないと無理なのでしょうか.
 
ちなみにこんな感じで作成しました
 
'入力したidをセット
id = TextBox1.Value
 
,参照ファイルとシートの指定
Set datafaile = Workbooks.Open("サーバー上のファイルの保存先")
Set wsData = dataBook.Sheets("ユーザー情報")
 
'該当するIDの行のデータを見つける
Set foundRow = wsData.Columns(1).Find(What:=sapid, LookIn:=xlValues, LookAt:=xlWhole)
 
'指定のボックスに表示
TextBox11.Value = wsData.Cells(foundRow.Row, 9).Value

回答
投稿日時: 25/01/22 16:11:08
投稿者: WinArrow

引用:

参照するファイルは必ず開く様にしないと無理なのでしょうか.

 
掲示のコードだけでは判断できませんが、
条件次第ですが、無理ではないです。
 
条件
ブックの参照シートがリスト形式になっていますか?
ADODBを使ったこといますか?

投稿日時: 25/01/23 14:44:11
投稿者: 春麗

どうもありがとうございます.
参照シートはリスト形式です
ADODBは知りませんでしたので,使い方を調べてみます.

回答
投稿日時: 25/01/23 17:47:16
投稿者: Suzu

Find を行っているのは、Loop を想定しているのでしょうか?
 
単一値 に対しての検索であり、同じ行の 9列目の値を取得したいのであれば
VLOOKUP では 不足なのでしょうか?
 
セル関数で、
=VLookUp検索値1,'C:\〜〜\[DATA.xlsx]Sheet1'!$A$1:$I$1000,9,0)
で、当該ファイルを開かなくとも取得できませんか?
 
 
それで満足するなら、
その数式を、VBA で、
セルの関数として 設定してあげれば良いでしょう。
 
Range("A1").FormulaLocal = "=VLookUp検索値1,'C:\〜〜\[DATA.xlsx]Sheet1'!$A$1:$I$1000,9,0)"
 
あとは、必要に応じて A1 の値を取得すれば良いです。
 
※ WorksheetFunction で、VLookUp を使用する場合には
 対象となるファイルが開いていないとエラーになりますので
 一度、セルの関数として設定する案としています。

回答
投稿日時: 25/02/09 21:34:59
投稿者: simple

春麗さん、↓で発言されるなら、こちらのスレッドを放置しないでもらえませんか?
https://www.moug.net/faq/viewtopic.php?t=82987
 
ちなみに、
VLookUp検索値1...
とカッコが抜けていますが、織り込んでいただいていますよね。
VLookUp(検索値1...

トピックに返信