Excel VBA質問箱 IV

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

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


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

【48269】同一フォルダ内の複数ブックから、指定範囲のセルの値をコピー eyes 07/4/10(火) 23:18 質問[未読]
【48270】Re:同一フォルダ内の複数ブックから、指定... ウッシ 07/4/10(火) 23:38 発言[未読]
【48279】Re:同一フォルダ内の複数ブックから、指定... eyes 07/4/11(水) 8:52 お礼[未読]
【48294】Re:同一フォルダ内の複数ブックから、指定... eyes 07/4/12(木) 1:26 質問[未読]
【48295】Re:同一フォルダ内の複数ブックから、指定... eyes 07/4/12(木) 1:53 発言[未読]
【48296】Re:同一フォルダ内の複数ブックから、指定... ウッシ 07/4/12(木) 8:47 発言[未読]
【48300】Re:同一フォルダ内の複数ブックから、指定... eyes 07/4/12(木) 10:30 お礼[未読]
【48301】Re:同一フォルダ内の複数ブックから、指定... ウッシ 07/4/12(木) 10:45 発言[未読]

【48269】同一フォルダ内の複数ブックから、指定範...
質問  eyes  - 07/4/10(火) 23:18 -

引用なし
パスワード
   フォルダ内にあるCSVファイルから、
毎回決まった行のコピーを別のブックにまとめたいのですが、

フォルダ内のファイルは
121L.CSV
121F.CSV
121I.CSV
342L.CSV
342F.CSV
342i.CSV
(121,342等のファイル名はランダム数になります。)
のように121のものに対し、3つのCSVファイルが作られています。
フォルダ内のファイル数は30〜40で不定です。

このフォルダ内のファイルの語尾がL.CSVの各47,48の2行をひとつの別ブックの1シートにまとめたいと思っています。

この掲示板にあった『44871 複数の同一形式ブックのセルデータを別のブックシートにまとめたい』
を参考に見ていたのですが、ファイル名が毎回ランダムになってしまうので、Forで回すとしても何を基準にすればいいか思いつきません。

大体の構成は出来ているのですが、組み方がいまいちわからないといった感じです。(間違っているかもですが・・・・
構成としては・・・
1、フォルダ内から該当するファイルを抽出
2、ファイル名を変数に代入
3、別のブックのA列にファイル名を値として貼り付け
4、抽出したファイルから指定行をコピー
5、コピーした値をB列から行にそって貼り付け
6、次の該当ファイルを抽出
7、2と同じ
8、先ほどコピーしたブックの3で貼り付けした2行下に貼り付け
9、4〜8の繰り返し(実際は1〜5の繰り返しですが・・・)

と、このような感じなのですが一番肝心なところでわからない
「ランダムなファイルの抽出の仕方」
を一番教えていただけたらありがたいです。

よろしくお願いします。

【48270】Re:同一フォルダ内の複数ブックから、指...
発言  ウッシ  - 07/4/10(火) 23:38 -

引用なし
パスワード
   こんばんは

>「ランダムなファイルの抽出の仕方」
マクロを実行するブックと同じフォルダ内の「*L.csv」を抽出なら、

Sub test()
  Dim f As String
  Dim s As String
  Dim i As Long
  f = ThisWorkbook.Path & "\*L.csv"
  i = 1
  s = Dir(f)
  Do While s <> ""
    Cells(i, 1) = s
    i = i + 1
    s = Dir
  Loop
End Sub

こんな感じです。

【48279】Re:同一フォルダ内の複数ブックから、指...
お礼  eyes  - 07/4/11(水) 8:52 -

引用なし
パスワード
   ウッシさん

お返事遅くなって、すみません。

深夜にもかかわらず、ご助言ありがとうございます。

昨日は、長男を寝かしつけて寝てしまったので今日にでも実践してみます。

ありがとうございます。

【48294】Re:同一フォルダ内の複数ブックから、指...
質問  eyes  - 07/4/12(木) 1:26 -

引用なし
パスワード
   今日一日悩んで組んでたんですが・・・

ウッシさんに教えていただいたコードで、
フォルダ名をA列に貼り付けることは出来ました。

後はフォルダを開いて、必要行を貼り付けようと思って、
ウッシさんのDoLoop文の中に下のようなコードを加えると、
一回の抽出をしてDoLoop文から飛び出てしまいました。

書いたコード自体、自信はないのですが、
DoLoop文の中の書き方に問題があるのでしょうか?

ご指南お願いいたします。


Private Sub Worksheet_Activate()
  Dim f As String
  Dim s As String
  Dim k As String
  Dim i As Long
   
  f = ThisWorkbook.Path & "\*L.csv"
  i = 2
  s = Dir(f)
  k = s
  Do While s <> ""
    Cells(i, 1) = s
    Workbooks.Open (k)
    Windows(k).Activate
    Set b = ActiveSheet
    b.Rows("2").Copy Range("A3")
    Windows(s).Close
    i = i + 3
    s = Dir
  Loop
End Sub

【48295】Re:同一フォルダ内の複数ブックから、指...
発言  eyes  - 07/4/12(木) 1:53 -

引用なし
パスワード
   すみません、ポカしてました。

イロイロやって、DoLoop文から飛び出すのは解消できました。

まだまだ不十分ですが、明日に完成してみようと思います。

訂正コード

Private Sub Worksheet_Activate()

  Dim f As String
  Dim s As String
  Dim k As String
  Dim i As Long
   
  f = ThisWorkbook.Path & "\*L.csv"
  i = 2
  s = Dir(f)
  k = s
  Do While s <> ""
    Cells(i, 1) = s
    Workbooks.Open (k)
    Windows(k).Activate
    Set b = ActiveSheet
    b.Rows("2").Copy
    Windows("抽出.xls").Activate
    
     ’下ココを直さないと上書きされちゃってます
    Range("A3").Select
    ActiveSheet.Paste
    Windows(s).Close
    i = i + 3
    s = Dir
  Loop

End Sub

こんな感じまで出来ました。

前の質問は気にしないでください。
すみませんでした。

【48296】Re:同一フォルダ内の複数ブックから、指...
発言  ウッシ  - 07/4/12(木) 8:47 -

引用なし
パスワード
   こんにちは

処理内容は別にして、どのブックのどのシートのどのセルを対象にした処理なのかを
明示的に書くようにして下さい。
(With ステートメント、オブジェクト変数を使用する。)

Sub test1()
  Dim f As String
  Dim s As String
  Dim k As String
  Dim i As Long
  Dim w As Workbook
  Dim b As Worksheet
  
  With ThisWorkbook
    f = .Path & "\*L.csv"
    i = 2
    s = Dir(f)
    k = .Path & "\" & s
    Do While s <> ""
      .Worksheets("Sheet1").Cells(i, 1) = s
      Set w = Workbooks.Open(k)
      Set b = w.ActiveSheet
      b.UsedRange.Rows("2").Copy .Worksheets("Sheet1").Cells(i, 2)
      w.Close False
      i = i + 1
      s = Dir
      k = .Path & "\" & s
    Loop
  End With
  Set w = Nothing
  Set b = Nothing
End Sub

【48300】Re:同一フォルダ内の複数ブックから、指...
お礼  eyes  - 07/4/12(木) 10:30 -

引用なし
パスワード
   こんにちは^_^

自分のやりたいことは、
ウッシさんのコードで解決しました。

ありがとうございます。

質問が的を得られなくていつもすみませんでした。

【48301】Re:同一フォルダ内の複数ブックから、指...
発言  ウッシ  - 07/4/12(木) 10:45 -

引用なし
パスワード
   こんにちは

>質問が的を得られなくていつもすみませんでした。
↓、このこと?
>処理内容は別にして、どのブックのどのシートのどのセルを対象にした処理なのかを
>明示的に書くようにして下さい。
>(With ステートメント、オブジェクト変数を使用する。)
↑、は
>’下ココを直さないと上書きされちゃってます
の解決策のことですよ。m(__)m

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