Excel VBA質問箱 IV

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

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


3157 / 13644 ツリー ←次へ | 前へ→

【63845】複数ファイルを順次開きシートをコピーする カンジ 09/12/19(土) 16:32 質問[未読]
【63846】Re:複数ファイルを順次開きシートをコピー... ponpon 09/12/19(土) 17:54 発言[未読]
【63847】Re:複数ファイルを順次開きシートをコピー... カンジ 09/12/20(日) 0:12 質問[未読]
【63848】Re:複数ファイルを順次開きシートをコピー... カンジ 09/12/20(日) 11:13 質問[未読]
【63849】Re:複数ファイルを順次開きシートをコピー... かみちゃん 09/12/20(日) 11:27 発言[未読]
【63850】Re:複数ファイルを順次開きシートをコピー... カンジ 09/12/20(日) 11:55 お礼[未読]

【63845】複数ファイルを順次開きシートをコピーす...
質問  カンジ  - 09/12/19(土) 16:32 -

引用なし
パスワード
   下記の操作で苦慮しています。よろしくお願いします。
複数のExcelのSheet(1)を一つのExcel(A)に集約する方法について
前提:
集約Excel(A)のA列に集約対象ExcelのExcel名が入力されている
(Excelの数は変動する)
集約Excel(A)のA列にExcel名があるExcelは同じフォルダ内に存在する
集約するSheetは全てSheet(1)とする

操作:
集約Excel(A)のA列(A1)に入力してあるExcel名のエクセルを開き
Sheet(1)を取り込む(シートコピーする)
同様にA2、A3・・にあるExcel名のSheet(1)を順次取り込む

上記操作で、A列Excel名を順次指定する方法が分かりません。
ご教示いただきたくよろしくお願いします。
カンジ

【63846】Re:複数ファイルを順次開きシートをコピ...
発言  ponpon  - 09/12/19(土) 17:54 -

引用なし
パスワード
   ▼カンジ さん:
>上記操作で、A列Excel名を順次指定する方法が分かりません。

順次指定するなら
以下のような感じでできるのでは?

Sub test()
  Dim r As Range
  Const mypath = "決まったフォルダのフルパス" & "\"
 
  With ThisWorkbook.Sheets("Sheet1")
    For Each r In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
    MsgBox mypath & r.Value
    Next
  End With
End Sub

【63847】Re:複数ファイルを順次開きシートをコピ...
質問  カンジ  - 09/12/20(日) 0:12 -

引用なし
パスワード
   ▼ponpon さん:
ありがとうございます
Excel名の指定の後の操作として、指定Excelを開き、Sheet(1)を集約Excelに
コピーし指定Excelを閉じる。次のExcelに。集約ExcelのSheet(1)のA列にある
Excel名を全て繰り返す。ということにチャレンジしましたが私の能力では
無理ということに!!
上記の操作についても教えていただければと思います。
よろしくお願いいたします。

>Sub test()
>  Dim r As Range
>  Const mypath = "決まったフォルダのフルパス" & "\"
> 
>  With ThisWorkbook.Sheets("Sheet1")
>    For Each r In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
>    MsgBox mypath & r.Value
>    Next
>  End With
>End Sub

【63848】Re:複数ファイルを順次開きシートをコピ...
質問  カンジ  - 09/12/20(日) 11:13 -

引用なし
パスワード
   前回の質問の後、試行錯誤しながら下記内容に至りましたが、処理済のファイルの
Closeがうまく行きません。ご指導ください。

Sub kinmu()
  ChDrive ThisWorkbook.Path  '同じフォルダを指定
  ChDir ThisWorkbook.Path
  Dim mySheet1 As String
  Dim r As Range
  myBook1 = 勤務Ver1.0.xls"
  myBook2 = "r.Value.xls"
  mySheet1 = "基礎"
      'Const mypath = "決まったフォルダのフルパス" & "\"    
  Workbooks(myBook1).Activate
  Worksheets(mySheet1).Select
  Range("A1").CurrentRegion.Select 'A列(A1以下)に操作対象のエクセル名がある 
  With ThisWorkbook.Sheets(mySheet1)
    For Each r In Selection
        'For Each r In .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp))
       ’これで指定はうまく行くのですが終わりの指示方法が分からなかったので For Each r Selection にした。
       'MsgBox mypath & r.Value
    Workbooks.Open Filename:=r.Value
    Sheets(1).Copy After:=Workbooks(myBook1).ActiveSheet
    Workbooks(r.Value).Close
       ’処理したBookはその都度Closeにしたいのだが、ここでエラーが発生します。ファイル名の指定が適切ではない様子。
       
    Next r
  End With
End Sub
上記のCloseのファイル指定の方法をよろしくお願いいたします。

【63849】Re:複数ファイルを順次開きシートをコピ...
発言  かみちゃん  - 09/12/20(日) 11:27 -

引用なし
パスワード
   こんにちは。かみちゃん です。


>上記のCloseのファイル指定の方法をよろしくお願いいたします。

 Workbooks.Open Filename:=r.Value
 Sheets(1).Copy After:=Workbooks(myBook1).ActiveSheet
 Workbooks(r.Value).Close

の部分を以下のようにしてはいかがでしょうか?

 Dim WB As Workbook
 
 Set WB = Workbooks.Open(Filename:=r.Value)
 WB.Sheets(1).Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
 WB.Close False

【63850】Re:複数ファイルを順次開きシートをコピ...
お礼  カンジ  - 09/12/20(日) 11:55 -

引用なし
パスワード
   かみちゃんさん
早速やってみました。全て順調でした。
昨夜からの頑張りに決着をつけてくれました。
ありがとうございました。

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