ExcelVBA複数のシートへのコピー方法

このQ&Aのポイント
  • ExcelVBAを使用して複数のシートへのコピー方法を学びたいです。コードを編集してもうまく行きません。
  • 特定のフォルダ内にある複数のファイルからデータを抽出し、別のシートにコピーしたいです。
  • 特定の年号を選択すると、複数のファイルからデータを抽出して結果のシートにコピーする処理を行いたいです。
回答を見る
  • ベストアンサー

【補足】ExcelVBA複数のシートへのコピー方法

「ExcelVBA複数のシートへのコピーの方法」 http://okwave.jp/qa/q8504035.html 上記質問の補足です。 '////////////////////////////////////////////////////// 「ExcelVBA別フォルダにあるブックのコピー方法」 http://okwave.jp/qa/q8488933.html で教えていただいたコードを元に自分なりに編集したのですがうまくいきません。 結果先のシートは複数なのですが、複数のシートにコピーする編集方法がうまくいきません。 '////////////////////////////////////////////////////// 「yyyy」のファイルは「1999~2012」のファイルがあります。   ※「yyyy」の箇所にはそれぞれの年号が入ります。   ※例えば「1999_ファイルA.xls」 「yyyy2」のファイルは「2000~2012」のファイルがあります。   ※「yyyy2」の箇所にはそれぞれの年号が入ります。   ※例えば「2000_ファイルB.xls」 1_フォルダA  ∟yyyy_ファイルA.xls(Sheet名:「dateA」で統一) 2_フォルダB  ∟yyyy_ファイルB.xls(Sheet名:「dateB」で統一) 3_フォルダC  ∟yyyy2_ファイルC.xls(Sheet名:「dateC」で統一) 4_フォルダD  ∟yyyy_ファイルD.xls(Sheet名:「dateD」で統一) 5_フォルダE  ∟ファイルE_結果.xls (Sheet名:A広域/B広域/C広域/D広域/E広域) 例えばコンボボックスで「2007」を選択した場合、 表【地域A男性】 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)F7~F25にコピー 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)J7~J25にコピー 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(A広域)L7~L25にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N7~N25にコピー 表【地域A女性】 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)F26~F44にコピー 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)J26~J44にコピー 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(A広域)L26~L44にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N26~N44にコピー 表【地域B男性】 「2006_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)D51~D69にコピー 「2007_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)E51~E69にコピー 「2008_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)F51~F69にコピー 「2006_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)H51~H69にコピー 「2007_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)I51~I69にコピー 「2008_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)J51~J69にコピー 「2007_ファイルC.xls」のD4~D22を「ファイルE_結果.xls」の(A広域)L51~L69にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N51~N69にコピー 表【地域B女性】 「2006_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)D70~D88にコピー 「2007_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)E70~E88にコピー 「2008_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)F70~F88にコピー 「2006_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)H70~H88にコピー 「2007_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)I70~I88にコピー 「2008_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)J70~J88にコピー 「2007_ファイルC.xls」のD24~D42を「ファイルE_結果.xls」の(A広域)L70~L88にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N70~N88にコピー 表【地域C男性】 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)F7~F25にコピー 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)J7~J25にコピー 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(B広域)L7~L25にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N7~N25にコピー 表【地域C女性】 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)F26~F44にコピー 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)J26~J44にコピー 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(B広域)L26~L44にコピー 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N26~N44にコピー ※「表【地域C女性】」等はワークシートの表のタイトルです。 '//////////////////////////////////////////////////////

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

' ' ///(3/投稿を3分割しています。) ' ' ■■■4_フォルダD   sWbkSubName = "4_フォルダD\" & vTgYear & "_ファイルD.xls"  ' ●   sShtName = "dateD" ' ●   On Error Resume Next   Set sht元データ = Workbooks.Open(sMyDir & sWbkSubName).Sheets(sShtName)   On Error GoTo 0   If sht元データ Is Nothing Then     sMsg = sMsg & vbLf & "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName   Else     With sht元データ ' ' 8) 地域A男 [2007_ファイルD.xls]dateD!E8:E26→A広域!N7:N25       shtA広域.Range("N7:N25").Value = .Range("E8:E26").Value ' ● ' ' 16) 地域A女 [2007_ファイルD.xls]dateD!E8:E26→A広域!N26:N44       shtA広域.Range("N26:N44").Value = .Range("E8:E26").Value ' ● ' ' 24) 地域B男 [2007_ファイルD.xls]dateD!E8:E26→A広域!N51:N69       shtA広域.Range("N51:N69").Value = .Range("E8:E26").Value ' ● ' ' 32) 地域B女 [2007_ファイルD.xls]dateD!E8:E26→A広域!N70:N88       shtA広域.Range("N70:N88").Value = .Range("E8:E26").Value ' ● ' ' 40) 地域C男 [2007_ファイルD.xls]dateD!E8:E26→B広域!N7:N25       shtB広域.Range("N7:N25").Value = .Range("E8:E26").Value ' ● ' ' 48) 地域C女 [2007_ファイルD.xls]dateD!E8:E26→B広域!N26:N44       shtB広域.Range("N26:N44").Value = .Range("E8:E26").Value ' ●       .Parent.Close SaveChanges:=False     End With     Set sht元データ = Nothing   End If   ' ' "ファイルC_2006~2008年結果.xls"形式の名前を付け保存する   Application.DisplayAlerts = False   wbk結果.SaveAs Filename:=sMyDir & "5_フォルダE\" & ComboBox1.Value & "_ファイルE.xls" '  ●   Application.DisplayAlerts = True   With Application     .ScreenUpdating = True     .Calculation = xlCalculationAutomatic   End With   Set shtA広域 = Nothing:  Set shtB広域 = Nothing:  Set wbk結果 = Nothing   If sMsg = "" Then     MsgBox Label1.Caption & vbLf & "処理完了", vbInformation   Else     MsgBox sMsg & vbLf & "開くことが出来ませんでした", vbExclamation   End If End Sub ' ' /// 以上です。

minminwamidori
質問者

お礼

お世話になりました。自力で解決できました。ありがとうございました。

minminwamidori
質問者

補足

ご回答いただきましてありがとうございました。やりたいことができたのですがコピーの内容が大きくなってしまい、「プロシージャが大きすぎます」となってしまい1つのプロシージャに収まりませんでした。そこで、2つに分けようと思ったのですが「すでに開いています。内容が破棄されます。」的なメッセージが出てしまい、前に入力された内容が保存されなくなってしまいました。コピー内容が多くなってしまい、プロシージャを2つに分けたい場合にはどうしたらよいでしょうか?私は、結果ファイルを開いておいてそこにコピーしていく方法を考え【http://okwave.jp/qa/q8508566.html】のようなコードを書いてみたのですが、エラーになってしまいました。もしご存じでしたらご教授いただけますと幸いです。

その他の回答 (2)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

' ' ///(2/投稿を3分割しています。) ' ' ■■■2_フォルダB     sWbkSubName = "2_フォルダB\" & vTgYear + i & "_ファイルB.xls" ' ●     sShtName = "dateB" ' ●     On Error Resume Next     Set sht元データ = Workbooks.Open(sMyDir & sWbkSubName).Sheets(sShtName)     On Error GoTo 0     If sht元データ Is Nothing Then       sMsg = sMsg & vbLf & "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName     Else       With sht元データ ' ' 4) 地域A男 [2006_ファイルB.xls]dateB!C5:C23→A広域!H7:H25 ' ' 5) 地域A男 [2007_ファイルB.xls]dateB!C5:C23→A広域!I7:I25 ' ' 6) 地域A男 [2008_ファイルB.xls]dateB!C5:C23→A広域!J7:J25         shtA広域.Range("I7:I25").Offset(, i).Value = .Range("C5:C23").Value ' ● ' ' 12) 地域A女 [2006_ファイルB.xls]dateB!C25:C43→A広域!H26:H44 ' ' 13) 地域A女 [2007_ファイルB.xls]dateB!C25:C43→A広域!I26:I44 ' ' 14) 地域A女 [2008_ファイルB.xls]dateB!C25:C43→A広域!J26:J44         shtA広域.Range("I26:I44").Offset(, i).Value = .Range("C25:C43").Value ' ● ' ' 20) 地域B男 [2006_ファイルB.xls]dateB!D5:D23→A広域!H51:H69 ' ' 21) 地域B男 [2007_ファイルB.xls]dateB!D5:D23→A広域!I51:I69 ' ' 22) 地域B男 [2008_ファイルB.xls]dateB!D5:D23→A広域!J51:J69         shtA広域.Range("I51:I69").Offset(, i).Value = .Range("D5:D23").Value ' ● ' ' 28) 地域B女 [2006_ファイルB.xls]dateB!D25:D43→A広域!H70:H88 ' ' 29) 地域B女 [2007_ファイルB.xls]dateB!D25:D43→A広域!I70:I88 ' ' 30) 地域B女 [2008_ファイルB.xls]dateB!D25:D43→A広域!J70:J88         shtA広域.Range("I70:I88").Offset(, i).Value = .Range("D25:D43").Value ' ● ' ' 36) 地域C男 [2006_ファイルB.xls]dateB!C5:C23→B広域!H7:H25 ' ' 37) 地域C男 [2007_ファイルB.xls]dateB!C5:C23→B広域!I7:I25 ' ' 38) 地域C男 [2008_ファイルB.xls]dateB!C5:C23→B広域!J7:J25         shtB広域.Range("I7:I25").Offset(, i).Value = .Range("C5:C23").Value ' ● ' ' 44) 地域C女 [2006_ファイルB.xls]dateB!C25:C43→B広域!H26:H44 ' ' 45) 地域C女 [2007_ファイルB.xls]dateB!C25:C43→B広域!I26:I44 ' ' 46) 地域C女 [2008_ファイルB.xls]dateB!C25:C43→B広域!J26:J44         shtB広域.Range("I26:I44").Offset(, i).Value = .Range("C25:C43").Value ' ●         .Parent.Close SaveChanges:=False       End With       Set sht元データ = Nothing     End If   Next i ' ' ■■■3_フォルダC   sWbkSubName = "3_フォルダC\" & vTgYear & "_ファイルC.xls" ' ●   sShtName = "dateC" ' ●   On Error Resume Next   Set sht元データ = Workbooks.Open(sMyDir & sWbkSubName).Sheets(sShtName)   On Error GoTo 0   If sht元データ Is Nothing Then     sMsg = sMsg & vbLf & "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName   Else     With sht元データ ' ' 7) 地域A男 [2007_ファイルC.xls]dateC!C4:C22→A広域!L7:L25       shtA広域.Range("L7:L25").Value = .Range("C4:C22").Value ' ● ' ' 15) 地域A女 [2007_ファイルC.xls]dateC!C24:C42→A広域!L26:L44       shtA広域.Range(" L26:L44").Value = .Range("C24:C42").Value ' ● ' ' 23) 地域B男 [2007_ファイルC.xls]dateC!D4:D22→A広域!L51:L69       shtA広域.Range("L51:L69").Value = .Range("D4:D22").Value ' ● ' ' 31) 地域B女 [2007_ファイルC.xls]dateC!D24:D42→A広域!L70:L88       shtA広域.Range("L70:L88").Value = .Range("D24:D42").Value ' ● ' ' 39) 地域C男 [2007_ファイルC.xls]dateC!C4:C22→B広域!L7:L25       shtB広域.Range("L7:L25").Value = .Range("C4:C22").Value ' ● ' ' 47) 地域C女 [2007_ファイルC.xls]dateC!C24:C42→B広域!L26:L44       shtB広域.Range("L26:L44").Value = .Range("C24:C42").Value ' ●       .Parent.Close SaveChanges:=False     End With     Set sht元データ = Nothing   End If ' ' つづく

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

「今」混乱せずに先に進めるように、要領を示す意味で簡単ストレートな書き方を心掛けました。 ダミーサンプル(フォルダ ブック シート データ)すべて作成し動作確認済です。 以下、コメント先頭の数字は 直下の処理が、ご提示の対応表での何件めに対応しているか、を示しています。 ちょっと目的が判らない不自然な処理が指示されているようにも思えますが 対応関係を参照すれば混乱することはないでしょうから ひとつひとつ確認しながら必要ならそちらで書換えるようにしてください。 (セル参照を修正する場合はコメントも直してください。) ' ' ///(1/投稿を3分割します。) Private Sub CommandButton1_Click() ' ● Re: 8488933 8503466 8504035 504383 Dim vTgYear As Variant Dim wbk結果 As Workbook Dim shtA広域 As Worksheet Dim shtB広域 As Worksheet Dim sht元データ As Worksheet Dim sMyDir As String Dim sWbkSubName As String Dim sShtName As String Dim sMsg As String Dim i As Long   vTgYear = ComboBox1.Value ' ●   If Not vTgYear Like "####" Then     MsgBox "年次を指定してからやり直し", vbExclamation     Exit Sub   End If   Select Case vTgYear   Case 1999 To 2012 ' ●   Case Else     MsgBox "1999~2012の間で年次を指定してからやり直し", vbExclamation ' ●     Exit Sub   End Select   sMyDir = ThisWorkbook.Path & "\"   With Application     .ScreenUpdating = False     .Calculation = xlCalculationManual   End With   ' ' ファイルE_結果.xls を開く   sWbkSubName = "5_フォルダE\ファイルE_結果.xls" ' ●   On Error Resume Next   Set wbk結果 = Workbooks.Open(sMyDir & sWbkSubName)   On Error GoTo 0   If wbk結果 Is Nothing Then     MsgBox "ブック◆" & sWbkSubName & vbLf & "を開くことが出来ませんでした", vbExclamation     Exit Sub   End If   ' ' ファイルE_結果.xls シート"A広域" を取得   sShtName = "A広域" ' ●   On Error Resume Next   Set shtA広域 = wbk結果.Sheets(sShtName)   On Error GoTo 0   If shtA広域 Is Nothing Then     MsgBox "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName & vbLf & "が見当たりません", vbExclamation     Set wbk結果 = Nothing     Exit Sub   End If   ' ' ファイルE_結果.xls シート"B広域" を取得   sShtName = "B広域" ' ●   On Error Resume Next   Set shtB広域 = wbk結果.Sheets(sShtName)   On Error GoTo 0   If shtB広域 Is Nothing Then     MsgBox "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName & vbLf & "が見当たりません", vbExclamation     Set wbk結果 = Nothing     Exit Sub   End If   ' ' 出力先のセル範囲を値消去  テンプレートが空白なら、以下2行不要   shtA広域.Range("(7:44,51:88) (D:F,H:J,L:L,N:N)").ClearContents ' ●   shtB広域.Range("(7:44) (D:F,H:J,L:L,N:N)").ClearContents ' ●   ' ' 前年~翌年、ループ   For i = -1 To 1 ' ' ■■■1_フォルダA     sWbkSubName = "1_フォルダA\" & vTgYear + i & "_ファイルA.xls" ' ●     sShtName = "dateA" ' ●     On Error Resume Next     Set sht元データ = Workbooks.Open(sMyDir & sWbkSubName).Sheets(sShtName)     On Error GoTo 0     If sht元データ Is Nothing Then       sMsg = sMsg & vbLf & "ブック◆" & sWbkSubName & vbLf & vbTab & "◆シート◆" & sShtName     Else       With sht元データ ' ' 1) 地域A男 [2006_ファイルA.xls]dateA!C5:C23→A広域!D7:D25 ' ' 2) 地域A男 [2007_ファイルA.xls]dateA!C5:C23→A広域!E7:E25 ' ' 3) 地域A男 [2008_ファイルA.xls]dateA!C5:C23→A広域!F7:F25         shtA広域.Range("E7:E25").Offset(, i).Value = .Range("C5:C23").Value ' ● ' ' 9) 地域A女 [2006_ファイルA.xls]dateA!D5:D23→A広域!D26:D44 ' ' 10) 地域A女 [2007_ファイルA.xls]dateA!D5:D23→A広域!E26:E44 ' ' 11) 地域A女 [2008_ファイルA.xls]dateA!D5:D23→A広域!F26:F44         shtA広域.Range("E26:E44").Offset(, i).Value = .Range("D5:D23").Value ' ● ' ' 17) 地域B男 [2006_ファイルA.xls]dateA!F5:F23→A広域!D51:D69 ' ' 18) 地域B男 [2007_ファイルA.xls]dateA!F5:F23→A広域!E51:E69 ' ' 19) 地域B男 [2008_ファイルA.xls]dateA!F5:F23→A広域!F51:F69         shtA広域.Range("E51:E69").Offset(, i).Value = .Range("F5:F23").Value ' ● ' ' 25) 地域B女 [2006_ファイルA.xls]dateA!G5:G23→A広域!D70:D88 ' ' 26) 地域B女 [2007_ファイルA.xls]dateA!G5:G23→A広域!E70:E88 ' ' 27) 地域B女 [2008_ファイルA.xls]dateA!G5:G23→A広域!F70:F88         shtA広域.Range("E70:E88").Offset(, i).Value = .Range("G5:G23").Value ' ● ' ' 33) 地域C男 [2006_ファイルA.xls]dateA!C5:C23→B広域!D7:D25 ' ' 34) 地域C男 [2007_ファイルA.xls]dateA!C5:C23→B広域!E7:E25 ' ' 35) 地域C男 [2008_ファイルA.xls]dateA!C5:C23→B広域!F7:F25         shtB広域.Range("E7:E25").Offset(, i).Value = .Range("C5:C23").Value ' ● ' ' 41) 地域C女 [2006_ファイルA.xls]dateA!D5:D23→B広域!D26:D44 ' ' 42) 地域C女 [2007_ファイルA.xls]dateA!D5:D23→B広域!E26:E44 ' ' 43) 地域C女 [2008_ファイルA.xls]dateA!D5:D23→B広域!F26:F44         shtB広域.Range("E26:E44").Offset(, i).Value = .Range("D5:D23").Value ' ●         .Parent.Close SaveChanges:=False       End With       Set sht元データ = Nothing     End If ' ' つづく

関連するQ&A

  • ExcelVBA複数のシートへのコピーの方法

    以下の質問の補足質問です。よろしくお願い致します。 「ExcelVBAコードの編集方法を教えてください」 http://okwave.jp/qa/q8503466.html 「ExcelVBA別フォルダにあるブックのコピー方法」 http://okwave.jp/qa/q8488933.html で教えていただいたコードを元に自分なりに編集したのですがうまくいきません。 結果先のシートは複数なのですが、複数のシートにコピーする編集方法がうまくいきません。 '////////////////////////////////////////////////////// yyyy = 1999~2012 yyyy2 = 2000~2012 Sheet名:A広域、B広域 1_フォルダA  ∟yyyy_ファイルA.xls 2_フォルダB  ∟yyyy_ファイルB.xls 3_フォルダC  ∟yyyy2_ファイルC.xls 4_フォルダD  ∟yyyy_ファイルD.xls 5_フォルダE  ∟ファイルE_結果.xls 例えばコンボボックスで「2007」を選択した場合、 '地域A男性 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)F7~F25にコピー '地域A女性 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)F26~F44にコピー '地域B男性 「2006_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)D51~D69にコピー 「2007_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)E51~E69にコピー 「2008_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)F51~F69にコピー '地域B女性 「2006_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)D70~D88にコピー 「2007_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)E70~E88にコピー 「2008_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)F70~F88にコピー '地域C男性 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)F7~F25にコピー '地域C女性 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)F26~F44にコピー '地域A男性 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)J7~J25にコピー '地域A女性 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)J26~J44にコピー '地域B男性 「2006_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)H51~H69にコピー 「2007_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)I51~I69にコピー 「2008_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)J51~J69にコピー '地域B女性 「2006_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)H70~H88にコピー 「2007_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)I70~I88にコピー 「2008_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)J70~J88にコピー '地域C男性 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)J7~J25にコピー '地域C女性 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)J26~J44にコピー '地域A男性 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(A広域)L7~L25にコピー '地域A女性 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(A広域)L26~L44にコピー '地域B男性 「2007_ファイルC.xls」のD4~D22を「ファイルE_結果.xls」の(A広域)L51~L69にコピー '地域B女性 「2007_ファイルC.xls」のD24~D42を「ファイルE_結果.xls」の(A広域)L70~L88にコピー '地域C男性 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(B広域)L7~L25にコピー '地域C女性 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(B広域)L26~L44にコピー '地域A男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N7~N25にコピー '地域A女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N26~N44にコピー '地域B男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N51~N69にコピー '地域B女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N70~N88にコピー '地域C男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N7~N25にコピー '地域C女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N26~N44にコピー '////////////////////////////////////////////////////// コピー先は複数あるのですが、文字数の関係で割愛させていただきます。 この内容で伝わると良いのですが。 何卒よろしくお願いします。

  • ExcelVBA別フォルダにあるブックのコピー方法

    ExcelVBAでデータを条件に応じてコピーしたいと思っています。 同一階層に「VBAファイル.xls」「1_フォルダA」「2_フォルダB」「3_フォルダC」があります。 「1_フォルダA」と「2_フォルダB」には年代別に分かれたファイルがあります。 ファイルとフォルダの構造は以下の通りです。 VBAファイル.xls 1_フォルダA  ∟1999_ファイルA.xls  ∟2000_ファイルA.xls  ∟2001_ファイルA.xls  ∟2002_ファイルA.xls  ∟2003_ファイルA.xls  ∟2004_ファイルA.xls  ∟2005_ファイルA.xls  ∟2006_ファイルA.xls  ∟2007_ファイルA.xls  ∟2008_ファイルA.xls  ∟2009_ファイルA.xls  ∟2010_ファイルA.xls  ∟2011_ファイルA.xls  ∟2012_ファイルA.xls 2_フォルダB  ∟1999_ファイルB.xls  ∟2000_ファイルB.xls  ∟2001_ファイルB.xls  ∟2002_ファイルB.xls  ∟2003_ファイルB.xls  ∟2004_ファイルB.xls  ∟2005_ファイルB.xls  ∟2006_ファイルB.xls  ∟2007_ファイルB.xls  ∟2008_ファイルB.xls  ∟2009_ファイルB.xls  ∟2010_ファイルB.xls  ∟2011_ファイルB.xls  ∟2012_ファイルB.xls 3_フォルダC  ∟ファイルC_結果.xls 「VBAファイル.xls」では添付の画像のような「ActiveXコントロール」を設定しました。 コンボボックスで西暦を選択すると、選択した年を中心年として、 前後1年を合わせて合計3年がラベルに表示されます。 その年のファイルのデータが「ファイルC_結果.xls」にコピーされるようにしたいです。 例えば画像のように「2007」を選択した場合、 ・「2006_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のD7~D25にコピー ・「2007_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のE7~E25にコピー ・「2008_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のF7~F25にコピー ・「2006_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のH7~H25にコピー ・「2007_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のI7~I25にコピー ・「2008_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のJ7~J25にコピー というようにしたいです。 「ファイルC_結果.xls」のD/E/F列はファイルAのデータで、 D列は前年、E列は当年、F列は翌年 H/I/J列はファイルBのデータで、 H列は前年、I列は当年、J列は翌年の値をコピーして貼り付けたいです。 また、可能であれば「ファイルC_結果.xls」は原本なので、 値をコピーする際にファイル名が変更できればよりよいです。 いろいろ書いてしまい、うまく伝わっているか不安なのですが 処理するデータが多くとても困っています。 お知恵のある方、どなたか助けていただけますと幸いです。 よろしくお願いいたします。

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • 1つのファイルを複数のディレクトリにコピーする

    ディレクトリAの中に ディレクトリ B ディレクトリ C ディレクトリ D ディレクトリ E ファイル F があるとします.ここでファイルFをB,C,D,Eにコピーするにはどうコマンドを打てばよいのでしょうか?

  • ExcelVBAでセルに入力された値をみて複数のファイルコピーするマクロ

    VBA初心者です。関連する質問はみたのですが、組み合わせが他と違い うまくできませんでした。 EXCELのマクロを使って、それぞれ格納場所が異なる2つのエクセルファイル(格納元D:\AAA\123A.xlsと格納元D:\BBB\123B.xls)をコピーして指定のフォルダ(格納先D:\ZZZ\)内へ2つファイルを保存したいのですが・・ Private Const cnsSrc = "D:\AAA\123A.xls" Private Const cnsDst = "D:\ZZZ\123A.xls" Sub COPY_Func() ' ファイルをコピー FileCopy cnsSrc, cnsDst End Sub まで考えたんですが 複数のファイルまでコピーさせることができませんでした。 また、それぞれのフォルダ内には○○○A.xlsと○○○B.xlsが複数あるため コピーするファイル名は選択させたく、sheet1のA1セルに入力された"123"を みて123A.xls123B.xlsをコピーさせたいのですが、可能でしょうか? 宜しくお願い致します。

  • 簡単にコピーする方法

    A、C、E、F列に3行目から250行目程度データが入っています。 H~J列のよう縦方向に順番にコピーする簡単な方法を教えて下さい。 但し、6行目の様に各スペース行を設ける。 また、結果が1000行となってしまっても良いです。 マクロ使用でも構いません。   A  B   C  D   E   F    G   H   I   J  1 2 3 ss    3-6      m   7        m      7 4 sz    1-8       g   6        ss 5                            3-6 6 7                             g      6 8                             sz 9                            1-8 . . . .

  • sheet1、sheet2の値をsheet3に集めたい。

    エクセルについて教えてください。 山田君のテストの結果 sheet1に、中間テスト結果A1B1C1D1E1、 sheet2に、期末テスト結果A1B1C1D1E1があり、 sheet3のA1B1C1D1E1、A2B2C2D2E2に 移動させていと考えています。 されに、小島さんのテスト 中間テスト結果が、sheet1のA2B2C2D2E2、 期末テスト結果が、sheet2のA2B2C2D2E2 にあり、それら2つを sheet3のA3B3C3D3E3、A4B4C4D4E4 に続けて移動させたいです。 実際は、2人だけではなく、 約200人以上を続けてsheet3に集めたいと思っています。 連続的に集めるためには、 どうすればよいか教えてください。 よろしくお願いします。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • エクセルで斜めに参照コピー

    1| A1 | B1 | C1 | D1 | E1・・・ 2| A2 | B2 | C2 | D2 | E2・・・ 3| A3 | B3 | C3 | D3 | E3・・・ 4| A4 | B4 | C4 | D4 | E4・・・ ・・・ と普通に並んでいるデータを 1| A1 | B2 | C3 | D4 | E5 |・・・ 2| = | A2 | B3 | C4 | D5 | E6 |・・・ 3| = | = | A3 | B4 | C5 | D6 | E7 |・・・ ・・・ (=は空白セル) とななめに参照コピーさせたいのですが、普通にドラッグコピーさせたのではうまくいきません。データ数が結構多いもので一つ一つコピーするのも大変です。何か簡便な方法はあるでしょうか?列毎もしくは行毎の作業でもいいので、何か良い方法がありましたらご教示いただけませんでしょうか?

  • 複数シートのデータをまとめたい

    複数のシートを下の例のように一つにまとめたいのですが、どうすればよいでしょうか? 注)見づらい例で申し訳ありません。 --------------------------------(例)---------------------------- [sheet1]と[sheet2]のデータを[sheet3]に出力させたい。 ※例では[sheet1][sheet2]共,5行目までしかデータがありませんが、  これより少ない時も多い時もあります。 [sheet1] (A1):担当者A (A2):項目A (B2):項目B (C2):項目C (D2):項目D (A3):テキスト1 (B3):15 (C3):2 (D3):テキスト4 (A4):テキスト2 (B4):3 (C4):1 (D4):テキスト5 (A5):テキスト3 (B5):4 (C5):2 (D5):テキスト6 [sheet2] (A1):担当者B (A2):項目A (B2):項目B (C2):項目C (D2):項目D (A3):テキスト7 (B3):5 (C3):3 (D3):テキスト10 (A4):テキスト8 (B4):7 (C4):2 (D4):テキスト11 (A5):テキスト9 (B5):9 (C5):4 (D5):テキスト12 [sheet3] (A2):項目A(B2):項目B(C2):項目C(D2):項目D(E2):担当者 (A3):テキスト1(B3):15(C3):2(D3):テキスト4(E3):担当者A (A4):テキスト2(B4):3(C4):1(D4):テキスト5(E4):担当者A (A5):テキスト3(B5):4(C5):2(D5):テキスト6(E5):担当者A (A6):テキスト7(B6):5(C6):3(D6):テキスト10(E6):担当者B (A7):テキスト8(B7):7(C7):2(D7):テキスト11(E7):担当者B (A8):テキスト9(B8):9(C8):4(D8):テキスト12(E8):担当者B ----------------------------------------------------------------