Page 554 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼指定ブックを開くには? ちー 03/1/15(水) 18:28 ┗Re:指定ブックを開くには? ポンタ 03/1/16(木) 8:45 ┗Re:指定ブックを開くには? ポンタ 03/1/16(木) 8:52 ┣Re:指定ブックを開くには? ちー 03/1/16(木) 9:08 ┗Re:指定ブックを開くには? ちー 03/1/16(木) 9:28 ┗Re:指定ブックを開くには? ポンタ 03/1/16(木) 12:01 ─────────────────────────────────────── ■題名 : 指定ブックを開くには? ■名前 : ちー ■日付 : 03/1/15(水) 18:28 -------------------------------------------------------------------------
はじめまして。 エクセルでフォームを作り、ボタンを配置してクリックするとインプットボックスがでてきて、開始日付と終了日付を入力するとグラフを作成するようにしたいのです。 でも、そのグラフのデータを別の指定したブックの中のシートにしたいのです。 そのブックはたくさんあり、例)2002年 2003年 2004年・・・とたくさんあります。 そのデータを開くためにはどうすればよいのでしょう。 インプットボックスで入力した日付からブックを開くにはどのようにしたらよいのでしょう? どなたか、よろしくお願いします。 |
他にもやり方があると思いますが、 ファイル数がそれほど多くないのなら、シート上に以下のような対応表を作って それを参照して開くのが簡単ではないかと思います。 A B 1 年 ファイルのパス 2 2002 C:\My Documents\2002年.xls 3 2003 C:\My Documents\2003年.xls 4 2004 C:\My Documents\2004年.xls 実際のコードはこんな感じです。 標準モジュールに貼り付けてお試しください。 Sub test() On Error Resume Next Dim i As Long Dim Wb As Workbook Dim DataWs As Worksheet Dim 開始日付 As String, 終了日付 As String 開始日付 = InputBox("開始日付を入力してください") If IsDate(開始日付) = False Then Exit Sub 終了日付 = InputBox("終了日付を入力してください") If IsDate(終了日付) = False Then Exit Sub Set DataWs = ThisWorkbook.Worksheets("Sheet1") For i = 2 To DataWs.Range("A65536").End(xlUp).Row If DataWs.Cells(i, 1).Value >= Year(開始日付) And DataWs.Cells(i, 1).Value <= Year(終了日付) Then Set Wb = Workbooks.Open(Cells(i, 2).Value) ThisWorkbook.Activate If Wb Is Nothing Then MsgBox (DataWs.Cells(i, 2).Value & "が開けません") End If End If Next End Sub |
スミマセン、フォーム上のボタンをクリックしたときに 動くようにしたかったんでしたね。(^_^;) Sub test() を Private Sub CommandButton1_Click() に変えて、フォームモジュールに貼り付けてください。 蛇足ですが、すでにフォームを使っているなら、 開始日付と終了日付の入力もフォームで処理したほうが すっきりすると思います。 |
ありがとうございます。 早速試してみます。 一つよろしいですか? >ファイル数がそれほど多くないのなら、シート上に以下のような対応表を作って・・・ とありましたが、データは年々追加されていくのでファイル数は増えていきます。 このような場合は、コードは全く違ってくるのでしょうか? |
スミマセン、ポンタさん(* *) 始めに大切なことを言い忘れていました。 2002年、2003年・・・の中に1月、2月、3月、4月、5月・・・12月のシートがあってその全部のシートを作ってからそのシートからグラフを作るようにしたいのです。 データは年々追加されていくので始めから全部のシートを作るのではなく、ボタンを押したときのコードに2003年の1月から12月のデータがSheet1に表示させるようにしたいのですが。 どのようにしたらよいのでしょう? |
>とありましたが、データは年々追加されていくのでファイル数は増えていきます。 >このような場合は、コードは全く違ってくるのでしょうか? : : 5 2005 C:\My Documents\2005年.xls 6 2006 C:\My Documents\2006年.xls というようにシートにデータを追記してあげるだけでよいです。 コードをいじる必要はありません。 >2002年、2003年・・・の中に1月、2月、3月、4月、5月・・・12月のシートがあって >その全部のシートを作ってからそのシートからグラフを作るようにしたいのです。 これがよく分かりません。 シートがあるんですか?ないんですか? 私は、シートを作る=ワークシートを挿入するという意味に取りましたが、 そうではないのでしょうか? |