• ベストアンサー

マクロでフォルダを検索し、フォルダ内のブックを参照したい。

エクセルでお願いします。 (1)と(2)のフォルダがあるとします。 (1)フォルダには年間のスケジュールを。 (2)フォルダにはスケジュールの内容を入れます(bookで)。 スケジュール表の特定の場所をクリックしたとき (例えば2月1日の部分)、 Bフォルダを開き、指定したbook (例えば2月1日のスケジュールを記載した)を開く。 こんなマクロを作成できますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

開きましたよ。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Const dataDir As String = "E:\スケジュール\Data\" Dim dataFilePath As String dataFilePath = dataDir & Target.Value & ".xls" Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(dataFilePath) Then Workbooks.Open (dataFilePath) End If End Sub 該当するブックが存在すれば開き、存在しなければ無視しています。 存在しなければ新規作成する、という動作が必要なら Else を追加してください。 ただし、前回の補足を読んだところ、1つのセルは「ある従業員の1ヶ月」に相当していますよね? 職番 111 の従業員が 2/12 に予定が入っていると 職番 111 の行と 2月列の交差したセルに「1110212」と入力。 じゃぁ同じ従業員が 2/20 にも予定がある場合はどうするんですか? 複数の予定日をセル内改行で入力しておいても、セル内の行ごとにクリックは感知できませんよ。

nananona_2006
質問者

お礼

ご返事有難うございました。 私も出来ました。 私の場合は ActiveCell.Value & ActiveCell.End(xlToLeft).Value & ".xls で開くことにしました。 複数の予定がある場合は、新たに行を足すことにしました。 この度は有難うございました。

その他の回答 (1)

回答No.1

どの部分がわからないのでしょうか? できるかできないかであれば「できる」という回答でしょうね。 Worksheet でマウスクリック関連のイベントはご自分で見てもらえばわかると思いますが、BeforeDoubleClick、BeforeRightClick しかなく、これらのイベントでは今回の要望を実現するには無理があると思います。 一般的には SelectionChange イベントを使う事になるでしょうかね。 SelectionChange イベントでは Target As Range の引数があるので、セルの番地や値などを取得することができます。 これで「いつの日付を選んだのか」がわかります。 ただし、すでにカーソルがあるセルをもう一度クリックしても SelectionChange イベントは発生しません。 さらに言えば、「セルをクリックする行為」は確かに「目的のセルを選択する行為」と言えますが、もし仮にスクロールが必要な画面構成であった場合、特に理由も無くセルをクリックする行為」であってもイベントが発生してしまう事にユーザーは注意しなくてはいけません。 Excel の場合、セル間の枠線以外すべてボタンのようなものでしょうから、一般的なカレンダー形式のスケジュール帳よりもクリックに敏感なツールになっちゃうでしょうね。 これをユーザーが良しとするかどうか・・・ あ、BeforeDoubleClick イベントを使うって手もあるかもしれません。意外に使えるかも。 BeforeDoubleClick イベントも Target As Range の引数があるし、Cancel = Boolean の引数も持っています。 イベント プロシージャの先頭にでも Cancel = True を書いておけばセル編集状態にはならないので便利かもしれません。

nananona_2006
質問者

補足

ありがとうございました。 補足します。 表の縦軸に社員のID・111とか222を。 横軸には1月・2月・・・・と並べます。 もし111が2月12日に用事があるなら、111と2月が 交差する部分に1110212と書き、そこをクリックすると、 スケジュールの内容を示したbookが表示される。 目指しているのはこのようなマクロです。 自分でもマクロを書きましたが、場所に関わらず 1112012のブックが開き、IDと合うスケジュール内容を 開くことが出来ません。

関連するQ&A