Excel VBA質問箱 IV

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

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


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

【82392】1フォルダ複数ブックExcelを指定した行切り取り1つのデータにしたい いい 24/10/17(木) 18:40 質問[未読]
【82393】Re:1フォルダ複数ブックExcelを指定した行... マナ 24/10/17(木) 19:45 発言[未読]
【82394】Re:1フォルダ複数ブックExcelを指定した行... いい 24/10/18(金) 9:29 回答[未読]
【82395】Re:1フォルダ複数ブックExcelを指定した行... いい 24/10/18(金) 9:30 発言[未読]
【82396】Re:1フォルダ複数ブックExcelを指定した行... マナ 24/10/18(金) 10:19 発言[未読]
【82397】Re:1フォルダ複数ブックExcelを指定した行... いい 24/10/18(金) 16:52 発言[未読]

【82392】1フォルダ複数ブックExcelを指定した行切...
質問  いい E-MAIL  - 24/10/17(木) 18:40 -

引用なし
パスワード
   以下のVBAを組みたいのですが、どうすれば良いかわからずご協力いただきたいです

●やりたい事(流れ)

・1つのフォルダに複数のExcelブック有
 フォルダ_リスト1.xlsx
     _リスト2.xlsx
     _リスト3.xlsx
     _リスト4.xlsx
      ・・・・

・リスト内の指定した行数を別ブックに移動させたい
 例「10行と設定」

 ⑴リスト1.xlsx 1〜10行→新ブックAにコピー
 ⑵リスト2.xlsx 1〜10行→⑴のコピーした下にコピー
 ⑶リスト3.xlsx 1〜10行→⑵のコピーした下にコピー
 ⑷リスト4.xlsx 1〜10行→⑶のコピーした下にコピー
 ⑸リスト1.xlsx 11〜21行→⑷のコピーした下にコピー
 ⑹リスト1.xlsx 11〜21行→⑸のコピーした下にコピー
 …リスト内のデータが無くなったら完了

・最終
 1つのExcelブックになる

・補足
 リスト内の最終行はブックことに異なる
 
 
        

【82393】Re:1フォルダ複数ブックExcelを指定した...
発言  マナ  - 24/10/17(木) 19:45 -

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


・データを並べる順番は、ファイル名の番号順なのか。
・実際のファイル名は、リスト1、2・・・なのか。
各ファイルのシート数は?シート名は?
・データの列数は決まっているのか。
・使用エクセルのバージョンは?
> 
> 
>

【82394】Re:1フォルダ複数ブックExcelを指定した...
回答  いい E-MAIL  - 24/10/18(金) 9:29 -

引用なし
パスワード
   ▼マナ さん:

コメントありがとうございます
情報が足りておらず申訳ありません
インラインにて回答失礼いたします

>▼いい さん:
>・データを並べる順番は、ファイル名の番号順なのか。
→そうです

>・実際のファイル名は、リスト1、2・・・なのか。
→実際は異なりますが、リスト1、2・・・とすることも可能です

>各ファイルのシート数は?シート名は?
→シートは1シートのみ、シート名はデフォルトの「Sheet1」です

>・データの列数は決まっているのか。
→決まっております、
 2列(A、B)のみとなります

>・使用エクセルのバージョンは?
→以下となrます
 2019
 バージョン 2409
>> 
>> 
>>

【82395】Re:1フォルダ複数ブックExcelを指定した...
発言  いい E-MAIL  - 24/10/18(金) 9:30 -

引用なし
パスワード
   ▼マナ さん:

コメントありがとうございます
情報が足りておらず申訳ありません
インラインにて回答失礼いたします

>▼いい さん:
>・データを並べる順番は、ファイル名の番号順なのか。
→そうです

>・実際のファイル名は、リスト1、2・・・なのか。
→実際は異なりますが、リスト1、2・・・とすることも可能です

>各ファイルのシート数は?シート名は?
→シートは1シートのみ、シート名はデフォルトの「Sheet1」です

>・データの列数は決まっているのか。
→決まっております、
 2列(A、B)のみとなります

>・使用エクセルのバージョンは?
→以下となrます
 2019
 バージョン 2409

【82396】Re:1フォルダ複数ブックExcelを指定した...
発言  マナ  - 24/10/18(金) 10:19 -

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


Sub test()
    Dim fdg As FileDialog, p As String
    Dim wsCons As Worksheet, c As Range
  Dim fn As String, ws As Worksheet, r As Range
  Dim n As Long, fx As String
  Const d As Long = 10

  Set fdg = Application.FileDialog(msoFileDialogFolderPicker)
  If Not fdg.Show Then Exit Sub
  
  
  Set wsCons = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
  Set c = wsCons.Cells(1)
  
  p = fdg.SelectedItems(1) & "\"
  fn = Dir(p & "リスト*.xlsx")
  Do While fn <> ""
    Set ws = Workbooks.Open(p & fn).Worksheets(1)
    ws.Columns(1).Insert
    Set r = ws.Cells(1).CurrentRegion
    n = r.Rows.Count
    fx = "roundup(row(1:" & n & ")/" & d & ",0)+" & Val(Mid(fn, 4)) / 1000
    r.Columns(1).Value = Evaluate(fx)
    c.Resize(n, r.Columns.Count).Value = r.Value
    Set c = c.Offset(n)
    ws.Parent.Close False
    fn = Dir()
  Loop
  
  Set r = wsCons.Cells(1).CurrentRegion
  r.Sort r.Columns(1)
  r.Columns(1).Delete xlToLeft

End Sub

【82397】Re:1フォルダ複数ブックExcelを指定した...
発言  いい E-MAIL  - 24/10/18(金) 16:52 -

引用なし
パスワード
   ▼マナ さん:

希望通りの動作できる事確認出来ました
非常に助かります!
ありがとうございました!


>▼いい さん:
>
>
>Sub test()
>    Dim fdg As FileDialog, p As String
>    Dim wsCons As Worksheet, c As Range
>  Dim fn As String, ws As Worksheet, r As Range
>  Dim n As Long, fx As String
>  Const d As Long = 10
>
>  Set fdg = Application.FileDialog(msoFileDialogFolderPicker)
>  If Not fdg.Show Then Exit Sub
>  
>  
>  Set wsCons = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
>  Set c = wsCons.Cells(1)
>  
>  p = fdg.SelectedItems(1) & "\"
>  fn = Dir(p & "リスト*.xlsx")
>  Do While fn <> ""
>    Set ws = Workbooks.Open(p & fn).Worksheets(1)
>    ws.Columns(1).Insert
>    Set r = ws.Cells(1).CurrentRegion
>    n = r.Rows.Count
>    fx = "roundup(row(1:" & n & ")/" & d & ",0)+" & Val(Mid(fn, 4)) / 1000
>    r.Columns(1).Value = Evaluate(fx)
>    c.Resize(n, r.Columns.Count).Value = r.Value
>    Set c = c.Offset(n)
>    ws.Parent.Close False
>    fn = Dir()
>  Loop
>  
>  Set r = wsCons.Cells(1).CurrentRegion
>  r.Sort r.Columns(1)
>  r.Columns(1).Delete xlToLeft
>
>End Sub

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