Excel VBA質問箱 IV

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

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


6199 / 13646 ツリー ←次へ | 前へ→

【46622】開いたファイルに別に保存してあるマクロを実行させる方法について ボボ 07/2/8(木) 10:56 質問[未読]
【46623】Re:開いたファイルに別に保存してあるマク... Jaka 07/2/8(木) 12:41 発言[未読]
【46626】Re:開いたファイルに別に保存してあるマク... ボボ 07/2/8(木) 13:27 お礼[未読]
【46637】Re:開いたファイルに別に保存してあるマク... ボボ 07/2/8(木) 18:01 質問[未読]
【46656】Re:開いたファイルに別に保存してあるマク... Jaka 07/2/9(金) 17:24 発言[未読]
【46624】Re:開いたファイルに別に保存してあるマク... inoue 07/2/8(木) 12:44 発言[未読]
【46636】Re:開いたファイルに別に保存してあるマク... ボボ 07/2/8(木) 17:47 お礼[未読]

【46622】開いたファイルに別に保存してあるマクロ...
質問  ボボ  - 07/2/8(木) 10:56 -

引用なし
パスワード
   マクロ初心者ですがよろしくお願いします。

「ファイルを開く」ダイアログボックスを表示させるマクロAを実行し、ファイルを選択して開き、その開いたファイルに、続けてマクロBを実行させたいのですが、この2つのマクロをあわせてひとつのマクロににして実行する方法がわかりません。
ちなみにマクロはマクロボタンを作成して、マクロだけのブックとして保存しておきたいのです。

つまり・・・

1.マクロの保存されたブックを開く
2.マクロボタンをクリックする
3.「ファイルを開く」ダイアログボックスが表示される(マクロA)
4.開きたいファイルを選択する(→続けてマクロBが実行される)
5.処理終了(マクロ実行後のファイルが表示される)

という工程にしたいのです。


マクロA↓
-------------------------------
Sub ダイアログボックス表示()
  Application.FindFile
End Sub
-------------------------------

上記のマクロAで開いたファイルに対して、マクロBを実行させたいのですが・・・。
そして、マクロA・Bを続けて実行できるように、マクロをひとつにまとめて、別のブックに保存しておきたいのです。

説明が分かりにくくて申し訳ありませんが、是非よろしくお願いします。

【46623】Re:開いたファイルに別に保存してあるマ...
発言  Jaka  - 07/2/8(木) 12:41 -

引用なし
パスワード
   Sub ダイアログボックス表示()
  Dim aa As Variant
  aa = Application.FindFile
  If aa = False Then Exit Sub
  Call bbbb
End Sub

Sub bbbb()
  '開いた時点で、開いたブックがアクティブになる。
  MsgBox ActiveWorkbook.Name

'他
  Dim ACBK As Workbook
  Set ACBK = ActiveWorkbook
  MsgBox ACBK.Name
End Sub

【46624】Re:開いたファイルに別に保存してあるマ...
発言  inoue  - 07/2/8(木) 12:44 -

引用なし
パスワード
   >1.マクロの保存されたブックを開く
>2.マクロボタンをクリックする
>3.「ファイルを開く」ダイアログボックスが表示される(マクロA)
>4.開きたいファイルを選択する(→続けてマクロBが実行される)
>5.処理終了(マクロ実行後のファイルが表示される)
3番以降がそのマクロの処理ですよね。
ファイルを任意に指定して、そのファイルを開いて、
何らかの処理をして閉じるというなら、
以下のようなコードになると思います。
[例]
Sub TEST()
Dim objWBK As Workbook
Dim vntFileName As Variant
' ファイルの指定
vntFileName = Application.GetOpenFilename("Excelファイル,*.xls")
If VarType(vntFileName) = vbBoolean Then Exit Sub
' 指定ブックのOpen
Set objWBK = Workbooks.Open(CStr(vntFileName))
With objWBK
  ' この中で開いたブックに対して処理
  ' 例として先頭シートのA1セルの値を表示
  MsgBox .Worksheets(1).Range("A1").Value
End With
' 指定ブックのClose(保存は任意)
objWBK.Close
End Sub

【46626】Re:開いたファイルに別に保存してあるマ...
お礼  ボボ  - 07/2/8(木) 13:27 -

引用なし
パスワード
   ▼Jaka さん:

早々のご回答ありがとうございます。
大変たすかりました!

【46636】Re:開いたファイルに別に保存してあるマ...
お礼  ボボ  - 07/2/8(木) 17:47 -

引用なし
パスワード
   丁寧なご回答ありがとうございます。
参考にさせていただきたいと思います。

【46637】Re:開いたファイルに別に保存してあるマ...
質問  ボボ  - 07/2/8(木) 18:01 -

引用なし
パスワード
   すみません、追加の質問2つなのですが、

1.「ファイルを開く」ダイアログボックスでキャンセルを選択した場合、
それ以降のマクロも実行されないというようにしたいのですが、
どのように記述したらよいのでしょうか?

2.「ファイルを開く」ダイアログボックスで、【ファイルの種類】を「すべてのファイル」にするにはどのように記述したらよいのでしょうか?

是非教えてください!よろしくお願いいたします。

【46656】Re:開いたファイルに別に保存してあるマ...
発言  Jaka  - 07/2/9(金) 17:24 -

引用なし
パスワード
   ▼ボボ さん:
>1.「ファイルを開く」ダイアログボックスでキャンセルを選択した場合、
>それ以降のマクロも実行されないというようにしたいのですが、
>どのように記述したらよいのでしょうか?
そうなってます。どこを見て質問しているのでしょうか?

>2.「ファイルを開く」ダイアログボックスで、【ファイルの種類】を「すべてのファイル」にするにはどのように記述したらよいのでしょうか?
APIを使わないとだめでしょうね。多分。
APIは、解らないのでSendKeys技、バージョンによって左右されるかも、多めに?25回繰り返しているけど....。

Sub ダイアログボックス表示()
  Dim aa As Variant
  SendKeys "({TAB})"
  SendKeys "({UP} 25)"
  DoEvents      '← うまくいかなかったら外してみるとか。
  aa = Application.FindFile
  If aa = False Then Exit Sub
  Call bbbb
End Sub

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