Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3923 / 13644 ツリー ←次へ | 前へ→

【59408】Functionプロシージャ中に別のブックを開く方法 むぅ 08/12/10(水) 10:20 質問[未読]
【59421】Re:Functionプロシージャ中に別のブックを... Jaka 08/12/10(水) 17:13 発言[未読]
【59425】Re:Functionプロシージャ中に別のブックを... むぅ 08/12/10(水) 18:28 質問[未読]
【59434】Re:Functionプロシージャ中に別のブックを... Jaka 08/12/11(木) 9:56 発言[未読]
【59441】Re:Functionプロシージャ中に別のブックを... むぅ 08/12/11(木) 13:24 質問[未読]
【59442】Re:Functionプロシージャ中に別のブックを... sasa 08/12/11(木) 13:47 回答[未読]
【59445】Re:Functionプロシージャ中に別のブックを... むぅ 08/12/11(木) 14:12 お礼[未読]

【59408】Functionプロシージャ中に別のブックを開...
質問  むぅ  - 08/12/10(水) 10:20 -

引用なし
パスワード
   自作関数で、別のブックに作成した数値表を参照して計算を実行するFunctionを作成してます。
参照先のブックは常に開かれた状態ではなく、Functionが実行される時に開く方法をとりたいと考えています。
が、参照先の特定ブックをFunction中に開くことができません。
何か良い方法が無いものでしょうか?

ちなみに、以下のコードを試してみましたがダメでした。

1.Functionコード中に、
  Dim flag As Boolean, Wb As Workbook
  For Each Wb In Workbooks
    If Wb.Name = "Sansyo.xls" Then flag = True
  Next Wb
  If Not flag = True Then
    Application.Dialogs(xlDialogOpen).Show arg1:="E:\Sansyo.xls"
  End If

2.Functionコード中には、
  Fl_Opn
 として、以下のSubプロシージャを別に記述する
Sub Fl_Opn()
  Dim flag As Boolean, Wb As Workbook
  For Each Wb In Workbooks
    If Wb.Name = "Sansyo.xls" Then flag = True
  Next Wb
  If Not flag = True Then
    Application.Dialogs(xlDialogOpen).Show arg1:="E:\Sansyo.xls"
  End If
End Sub

どちらも Application.Dialogs(xlDialogOpen).Show が無視されて先に進んでしまいました(T T)
どなたか、ヘルプお願いします。

【59421】Re:Functionプロシージャ中に別のブック...
発言  Jaka  - 08/12/10(水) 17:13 -

引用なし
パスワード
   数式じゃないですよね。
Application.Run
使うとか。

【59425】Re:Functionプロシージャ中に別のブック...
質問  むぅ  - 08/12/10(水) 18:28 -

引用なし
パスワード
   ▼Jaka さん:
>数式じゃないですよね。
>Application.Run
>使うとか。

どのように使ったらいいんでしょう?
すみません、素人同然なもので、具体例があると助かります。
どうかよろしくお願いします。

【59434】Re:Functionプロシージャ中に別のブック...
発言  Jaka  - 08/12/11(木) 9:56 -

引用なし
パスワード
   Application.Runで検索すると使用例が見つかります。

【51432】他ブックの変数の取得
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=51432;id=excel

【51104】コマンドボタンをマクロでクリック!
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=51104;id=excel

【49284】Call と Application.Run の違い
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=49284;id=excel
 
【47727】別Excelのモジュール起動
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=47727;id=excel

【24512】別のブックのマクロの実行と結果について
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=24512;id=excel


Dim 対象ブックのパス As String, 対象ブック名 As String
Dim 実行マクロ名 As String

対象ブックのパス = "'" & "C:\aaaa\vvv\mmmm\"
対象ブック名 = "123ブック.xls"
実行マクロ名 = "Functionマクロ名"

mmn = Application.Run(対象ブックのパス & 対象ブック名 & "'!" & 実行マクロ名)
Workbooks(対象ブック名).Close (False)

MsgBox mmn

【59441】Re:Functionプロシージャ中に別のブック...
質問  むぅ  - 08/12/11(木) 13:24 -

引用なし
パスワード
   ご丁寧にありがとうございます。

でもなんだかちがうような....

別ブックのFunctionマクロを実行したいのではなく、
別のブックを開いて値を参照するという手順を
元ブックのFunctionマクロに記述したいのですが....

質問が分かりにくくてすみません

どうかお助けください

【59442】Re:Functionプロシージャ中に別のブック...
回答  sasa  - 08/12/11(木) 13:47 -

引用なし
パスワード
   >自作関数で、別のブックに作成した数値表を参照して計算を実行するFunctionを作成してます。
>どちらも Application.Dialogs(xlDialogOpen).Show が無視されて先に進んでしまいました(T T)

示されたマクロを試してみましたが、
Application.Dialogs(xlDialogOpen).Show
は、ちゃんと実行されます。
推測するに、
計算を実行するFunctionを作成してます

は、ユーザー定義ワークシート関数のことを指していませんか?
そうであれば、Showメソッドなどははなから実行できません。
以下などが参考になるでしょう。
E97M012 Subプロシージャでは正常に動作するのにユーザー定義ワークシート関数(Functionプロシージャ)にすると動作しない 
ht tp://homepage2.nifty.com/kmado/kvba.htm

>参照先の特定ブックをFunction中に開くことができません。
>  何か良い方法が無いものでしょうか?

普通にセルにリンクして値を取得するだけでは...

【59445】Re:Functionプロシージャ中に別のブック...
お礼  むぅ  - 08/12/11(木) 14:12 -

引用なし
パスワード
   あー、やっぱりそういうことなんですね。

ちょっと別の作戦で練り直してみます。

どうもありがとうございました。

3923 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free