Excel VBA質問箱 IV

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

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


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

【20310】他ブックを開く方法は? 教えてください 04/12/4(土) 23:46 質問[未読]
【20311】Re:他ブックを開く方法は? [名前なし] 04/12/5(日) 0:08 発言[未読]
【20312】Re:他ブックを開く方法は? 教えてください 04/12/5(日) 0:42 質問[未読]
【20313】Re:他ブックを開く方法は? ちゃっぴ 04/12/5(日) 0:53 回答[未読]
【20314】Re:他ブックを開く方法は? 教えてください 04/12/5(日) 1:27 質問[未読]
【20315】Re:他ブックを開く方法は? IROC 04/12/5(日) 2:33 回答[未読]
【20319】Re:他ブックを開く方法は? 教えてください 04/12/5(日) 13:41 質問[未読]
【20320】Re:他ブックを開く方法は? ちゃっぴ 04/12/5(日) 14:17 回答[未読]
【20323】Re:他ブックを開く方法は? 教えてください 04/12/5(日) 14:58 お礼[未読]
【20325】Re:他ブックを開く方法は? [名前なし] 04/12/5(日) 15:14 発言[未読]

【20310】他ブックを開く方法は?
質問  教えてください  - 04/12/4(土) 23:46 -

引用なし
パスワード
   ユーザーフォームのコマンドボタンを使用して
他ブックを開くことはできるのでしょうか?

セルのダブルクリックによる他ブックを開くことはできるのですが・・・。

ブックは、同じフォルダ内にあります。

教えてください。お願いします。

【20311】Re:他ブックを開く方法は?
発言  [名前なし]  - 04/12/5(日) 0:08 -

引用なし
パスワード
   セルのダブルクリック時と同じコードにしたらだめだったんですか?
セルのダブルクリック時のコードはどのようなものですか?

【20312】Re:他ブックを開く方法は?
質問  教えてください  - 04/12/5(日) 0:42 -

引用なし
パスワード
   名前なしさん、早速のご返信有難うございます。
コードの記述は以下のようにしました。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cansel_ As Boolean)
 Const strDrv As String = "C"
 Const strDir As String = "\○○\△△"

 ChDrive ActiveWorkbook.Path
 ChDrir ActiveWorkbook.Path

 Workbooks.Open Target.Value

と記述し、指定のセルには□□.xleと書き込みました。
□□.xleと書き込んだセルをダブルクリックしたら
Cドライブの\○○\△△ファイルのブックが開きました。
どこを変えたら良いのでしょうか?
教えてください。

お恥ずかしいのですが、初心者なのでよくわかりません。
宜しくお願いします。

【20313】Re:他ブックを開く方法は?
回答  ちゃっぴ  - 04/12/5(日) 0:53 -

引用なし
パスワード
   > ChDrive ActiveWorkbook.Path
> ChDrir ActiveWorkbook.Path

これは意味ないですね。
ファイルを操作するときはFullPathで
指定してやるというのが定番です。

Workbooks.Open ThisworkBook.Path & "\" & Target.Value

でいいでしょう。

対象のBookが存在しない場合、および開けない場合も考慮して、

On Error Resume Next
Workbooks.Open ThisworkBook.Path & Target.Value
On Error Goto 0
If Err Then Msgbox ThisworkBook.Path & Target.Value _
  & "が開けません。"

とかしておくと、完璧でしょう。

【20314】Re:他ブックを開く方法は?
質問  教えてください  - 04/12/5(日) 1:27 -

引用なし
パスワード
   ちゃっぴさんへ
Private Sub Commandbuttan1_Click()

 Const strDrv As String = "C"
 Const strDir As String = "\○○"

Workbooks.Open ThisWorkbook.Path & "\□□.xls" & Target.Value

On Error Resume Next
Workbooks.Open ThisWorkbook.Path & Target.Value
On Error GoTo 0
If Err Then MsgBox ThisWorkbook.Path & Target.Value _
  & "が開けません。"

End Sub

こうやったのですが、エラーが出てしまいます。
フォームのコマンドボタンから他ブック(\□□.xls)を開くには、
どこを直せばよいのでしょうか?
基本がよくわかっていないもので
訳のわからないことやっていると思いますが
宜しくお願いします。

【20315】Re:他ブックを開く方法は?
回答  IROC  - 04/12/5(日) 2:33 -

引用なし
パスワード
   最初の open が余分でしょう。

ちゃっぴさんの説明をしっかり読んでみて下さい。

【20319】Re:他ブックを開く方法は?
質問  教えてください  - 04/12/5(日) 13:41 -

引用なし
パスワード
   皆さん、色々教えて下さり、ありがとうございます。

確かに、シートをクリックすれば、目的のブックをひらくことができますが、
コマンドボタンをクリックしても、目的のブックを開けないです。
最初のOpenを外せば、&にエラー又は、構文が違いますと表示されます。
どうしたら良いのでしょう。

【20320】Re:他ブックを開く方法は?
回答  ちゃっぴ  - 04/12/5(日) 14:17 -

引用なし
パスワード
   > 基本がよくわかっていないもので
> 訳のわからないことやっていると思いますが

では、わからないところは片っ端からHelpなりで調べるなどして
徹底的にお勉強してください。

DebugのTechnicが十分でないようなので、基本的なDebug方法を
教えますのでいろいろ試してみてください。

> Workbooks.Open ThisWorkbook.Path & "\□□.xls" & Target.Value

これが何をしているかわかりますか?
まあ、答えを書いてしまうと、引数Filenameに指定されたBookを
開くという命令です。

ここで、Bookが開けないということはどういう原因が想定されますか?
一番可能性が高いのは、「ThisWorkbook.Path & "\□□.xls" & Target.Value」
というBookが存在しないCaseです。

「ThisWorkbook.Path & "\□□.xls" & Target.Value」
このままですと、全体が見渡しづらいので、一度String型の変数に
入れてやります。

Dim strFilePath As String
strFilePath = ThisWorkbook.Path & "\□□.xls" & Target.Value

こうしておいて、その文字列を表示させる命令を実行します。

Msgbox strFilePath    'メッセージボックスに表示します。
Debug.Print strFilePath  'イミディエイトウィンドウに表示します。

こうすれば、そのProcedureが実行されたときのBookのPathが
得られますので、そのFileが存在するか判断可能でしょう。

CodeをDebugするには、おかしくなっていると思われる変数を
調べるというのが基本ですので、このようにMsgbox, Debug.Printを
しようして、片っ端から変数の値を調べてやりましょう。

あと、ヘルプの記述がわかりずらいのであれば、VBAの「文法」を
きちんと解説している参考書を購入して、勉強したほうがいいでしょうね。
(これを理解することが、VBAを習得する上で一番の近道です。)

「文法」さえ、理解できれば、あとはここのMethod, Propertyを
Helpで調べるだけで使いこなせるようになります。

【20323】Re:他ブックを開く方法は?
お礼  教えてください  - 04/12/5(日) 14:58 -

引用なし
パスワード
   自分で考えなさいということですね。
がんばります。

皆さん、色々有難うございました。

【20325】Re:他ブックを開く方法は?
発言  [名前なし]  - 04/12/5(日) 15:14 -

引用なし
パスワード
   ヒントだけ。
ダブルクリックイベント内のTarget.Valueは、
イベントの引数のTargetに、「ダブルクリックされたセル」が入ります。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
のTarget As Rangeのところです。

しかし、コマンドボタンのイベントの場合、このTargetが使えないので、
Target.Valueをなっているところは全て変更しなければなりません。

セルが固定されている(例えばA1セル)なら、Range("A1").Valueに、
現在アクティブなセルならActiveCell.Valueにします。


なんか、ヒントというより答えに近いような・・・。

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