過去ログ

                                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年・・・とたくさんあります。
そのデータを開くためにはどうすればよいのでしょう。
インプットボックスで入力した日付からブックを開くにはどのようにしたらよいのでしょう?

どなたか、よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:指定ブックを開くには?  ■名前 : ポンタ  ■日付 : 03/1/16(木) 8:45  -------------------------------------------------------------------------
   他にもやり方があると思いますが、
ファイル数がそれほど多くないのなら、シート上に以下のような対応表を作って
それを参照して開くのが簡単ではないかと思います。

  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
 ───────────────────────────────────────  ■題名 : Re:指定ブックを開くには?  ■名前 : ポンタ  ■日付 : 03/1/16(木) 8:52  -------------------------------------------------------------------------
   スミマセン、フォーム上のボタンをクリックしたときに
動くようにしたかったんでしたね。(^_^;)

Sub test()

Private Sub CommandButton1_Click()
に変えて、フォームモジュールに貼り付けてください。

蛇足ですが、すでにフォームを使っているなら、
開始日付と終了日付の入力もフォームで処理したほうが
すっきりすると思います。
 ───────────────────────────────────────  ■題名 : Re:指定ブックを開くには?  ■名前 : ちー  ■日付 : 03/1/16(木) 9:08  -------------------------------------------------------------------------
   ありがとうございます。
早速試してみます。

一つよろしいですか?
>ファイル数がそれほど多くないのなら、シート上に以下のような対応表を作って・・・
とありましたが、データは年々追加されていくのでファイル数は増えていきます。
このような場合は、コードは全く違ってくるのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:指定ブックを開くには?  ■名前 : ちー  ■日付 : 03/1/16(木) 9:28  -------------------------------------------------------------------------
   スミマセン、ポンタさん(* *)
始めに大切なことを言い忘れていました。

2002年、2003年・・・の中に1月、2月、3月、4月、5月・・・12月のシートがあってその全部のシートを作ってからそのシートからグラフを作るようにしたいのです。
データは年々追加されていくので始めから全部のシートを作るのではなく、ボタンを押したときのコードに2003年の1月から12月のデータがSheet1に表示させるようにしたいのですが。

どのようにしたらよいのでしょう?
 ───────────────────────────────────────  ■題名 : Re:指定ブックを開くには?  ■名前 : ポンタ  ■日付 : 03/1/16(木) 12:01  -------------------------------------------------------------------------
   >とありましたが、データは年々追加されていくのでファイル数は増えていきます。
>このような場合は、コードは全く違ってくるのでしょうか?

   :
   :
5 2005  C:\My Documents\2005年.xls
6 2006  C:\My Documents\2006年.xls
というようにシートにデータを追記してあげるだけでよいです。
コードをいじる必要はありません。

>2002年、2003年・・・の中に1月、2月、3月、4月、5月・・・12月のシートがあって
>その全部のシートを作ってからそのシートからグラフを作るようにしたいのです。

これがよく分かりません。
シートがあるんですか?ないんですか?
私は、シートを作る=ワークシートを挿入するという意味に取りましたが、
そうではないのでしょうか?
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 554