Excel VBA質問箱 IV

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

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


12102 / 13645 ツリー ←次へ | 前へ→

【12345】Excel VBAで、同一フォルダに格納された... ひろκ 04/3/31(水) 13:53 質問
【12346】Re:Excel VBAで、同一フォルダに格納された... IROC 04/3/31(水) 14:06 回答
【12347】Re:Excel VBAで、同一フォルダに格納された... ひろκ 04/3/31(水) 14:18 質問
【12348】Re:Excel VBAで、同一フォルダに格納され... IROC 04/3/31(水) 14:40 回答
【12349】Re:同一フォルダの全ファイルを集計して表... ひろκ 04/3/31(水) 15:16 質問
【12365】Re:同一フォルダの全ファイルを集計して表... IROC 04/4/1(木) 9:39 回答
【12366】Re:同一フォルダの全ファイルを集計して... ひろκ 04/4/1(木) 10:28 お礼
【12367】Re:同一フォルダの全ファイルを集計して... IROC 04/4/1(木) 11:27 回答

【12345】Excel VBAで、同一フォルダに格納された...
質問  ひろκ  - 04/3/31(水) 13:53 -

引用なし
パスワード
   急ぎ、Excelの表の項目を集計するマクロを作る必要があり 焦っております。
何をどうすればよいか分からないので、皆様のお知恵を拝借できれば、と思い 藁にも縋る思いで投稿します。
何卒よろしくお願い致します。


【要件】
- 同一フォルダに格納された全ブック(約200)で、各ブック 4つの項目を集計して表に書き出します。
- ファイル名は、全て異なります。(XXXXX999 か XXXX999 という「半角英大文字5桁+数字3桁」か「半角英大文字4桁+数字3桁」という形式)
- 集計対象のシート名・項目名は全ブックとも同一です。


どうぞよろしくご教示ください。

【12346】Re:Excel VBAで、同一フォルダに格納され...
回答  IROC  - 04/3/31(水) 14:06 -

引用なし
パスワード
   >各ブック 4つの項目を集計して表に書き出します

レイアウトについて、詳しく教えて下さい。

【12347】Re:Excel VBAで、同一フォルダに格納され...
質問  ひろκ  - 04/3/31(水) 14:18 -

引用なし
パスワード
   ▼IROC さん:
>レイアウトについて、詳しく教えて下さい。


シート名はそれぞれ違いまして、「ABCDE123」といった具合です。
各ブックに「合計」というシートがあります。(他のシートは集計マクロには使わないです。)

D1に見積もり工数時間「00:00:00」、
C15にTOTAL時間「00:00」、
C17に超過時間「00:00」という形式です。
尚、「見積もり工数」は直接ここへ入力しますが、残りの二つはシート内 もしくは 同一ブック内の他シートから値を引っ張ってきたり、計算しています。

集計は、これに ブック名(「ID番号.xls」)を加えて書き出したいのです。
(C3にもこのIDが入っています。)


こんな拙い説明で分かりますでしょうか......

【12348】Re:Excel VBAで、同一フォルダに格納され...
回答  IROC  - 04/3/31(水) 14:40 -

引用なし
パスワード
   動作未確認です。
別フォルダに、コピーのファイルを何個か用意して、試して下さい。
(いきなり、大事なデータで試さないで下さい。)

マクロブックの開かれているシートに、抽出します。
問題点などありましたら、連絡下さい。

Sub Sample()
Dim myObj As Object
Dim myDir As String
Dim myFileName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim r As Long
    
  'フォルダ選択ダイアログの表示
  Set myObj = CreateObject("Shell.Application"). _
  BrowseForFolder(0, "フォルダを選択してください", 0)
  If myObj Is Nothing Then Exit Sub
 
  myDir = myObj.Items.Item.Path
  If Right(myDir, 1) <> "\" Then myDir = myDir & "\"


'フォルダ内のExcelファイル検出
  myFileName = Dir(myDir & "*.xls")
  
With ThisWorkbook.ActiveSheet
    .Cells.ClearContents 'クリア
    .Range("A1").Value = "ブック名"
    .Range("B1").Value = "見積もり工数時間"
    .Range("C1").Value = "TOTAL時間"
    .Range("D1").Value = "超過時間"
    
  Do While myFileName <> ""
    If myFileName = ThisWorkbook.Name Then myFileName = ""
    
      'ブック開く
      Set wb = Workbooks.Open(myDir & myFileName)
      Set ws = wb.Worksheets("合計")
                  
      'データを入力する最下行を求める
      r = .Range("A65536").End(xlUp).Offset(1).Row
      
      .Cells(r, 1).Value = wb.Name 'ブック名
      .Cells(r, 2).Value = ws.Range("D1").Value '見積もり工数時間
      .Cells(r, 3).Value = ws.Range("C15").Value 'TOTAL時間
      .Cells(r, 4).Value = ws.Range("C17").Value '超過時間
      
      'ブック閉じる
      wb.Close
    
    myFileName = Dir()
  Loop

End With
End Sub

【12349】Re:同一フォルダの全ファイルを集計して...
質問  ひろκ  - 04/3/31(水) 15:16 -

引用なし
パスワード
   ▼IROC さん:
>動作未確認です。
>別フォルダに、コピーのファイルを何個か用意して、試して下さい。


こんなに丁寧に回答頂いて、ありがとうございます。
試行してみました。

「Set wb = Workbooks.Open(myDir & myFileName)」で不具合があるようで、止まってしまいました。

重ね重ねの質問で恐縮ですが、解決法につき ご教示いただければありがたい限りです。

【12365】Re:同一フォルダの全ファイルを集計して...
回答  IROC  - 04/4/1(木) 9:39 -

引用なし
パスワード
   いろいろなフォルダで試してみましたか?

もしダメなときは、 F8 キー でステップ実行させて、
VBEのローカルウィンドウで myDir や myFileName の
変数の中身を確認してみて下さい。

こちらでは、問題なく動作しましたので。

【12366】Re:同一フォルダの全ファイルを集計して...
お礼  ひろκ  - 04/4/1(木) 10:28 -

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

大変申し訳ございません。
動きました。

見ず知らずの者に対して、こんなに丁寧に対応して頂きまして、本当にありがとうございました。
何とお礼を申していいのやら......
ありきたりの言葉しか思い浮かびませんが、重ね重ね 厚く御礼申し上げます。

【12367】Re:同一フォルダの全ファイルを集計して...
回答  IROC  - 04/4/1(木) 11:27 -

引用なし
パスワード
   >何とお礼を申していいのやら......

マクロ(VBA)の便利さを分かって頂けたことと思いますので、
これを機にマクロを勉強して、もっとExcelを活用して下さい。ヾ(^_^)

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