• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで複数ファイルからコピーをする。)

エクセルで複数ファイルからコピーをする方法

OtenkiAmeの回答

  • OtenkiAme
  • ベストアンサー率77% (69/89)
回答No.2

こんにちは。 補足の回答ありがとうございました。 日付順に並んでいるということなので、この部分についての処理は割愛して作成します。 頭の中では出来上がっていますが、これから用事があるので、後でサンプルコードを作って提示します。<(_ _)> 以下の文は、昨日書き置きした回答文です。記録したコードを整理することで、共通点や規則性を見出すことができますのでコードを提示する間、記録したコードの編集にチャレンジしてみてください。 ---------- これからもVBAを使っていくという前提で記録したマクロの編集方法を書いておきます。 まず、質問者さんが"970305日報1.xls"をアクティブにして閉じるまでの記録したコードの作業を書き出しましたので読んでみてください。 "970305日報1.xls"をアクティブにした "B34:B38"を選択した コピーした "日報リスト.xls"をアクティブにした "C1"を選択した 形式を選択して貼り付けた(行列入替) "970305日報1.xls"をアクティブにした "C33:C38"を選択した コピーした "日報リスト.xls"をアクティブにした "H1"を選択した 形式を選択して貼り付けた(行列入替) "日報リスト.xls"を保存した "970305日報1.xls"をアクティブにした "970305日報1.xls"を閉じた それで…、実際になさりたいことは、 "970305日報1.xls"ブックの(シート1の)"B34:B38"をコピーする "日報リスト.xls"ブックの(シート1の)"C1"に行列入替で貼り付ける "970305日報1.xls"ブックの(シート1の)"C33:C38"をコピーする "日報リスト.xls"ブックの(シート1の)"H1"に行列入替で貼り付ける "日報リスト.xls"ブックを保存する "970305日報1.xls"ブックを閉じる ということですよね? 作業を記録した時は、仕方なくブックやセルをアクティブにしたり選択するのであって、実際の処理には必要のない処理なんです。 それで、ブックやシート、セルに対する処理では、ほとんどの場合、Activateや、Select~Selectionなどを省略し、前後のコードを編集してつないで書くことができ、画面を切り替えたり、選択することをなくすことによって画面のちらつきがなくなり、処理も速くなります。例えば、上記の処理の Windows("970305日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False’←(エクセルが勝手に行ったかEscを押した) Selection.Copy は、当初の目的の処理のとおり、次のように編集することができます。 ("970305日報1.xls"ブックの(シート1の)"B34:B38"をコピーする) WorkBooks("970305日報1.xls").Worksheets(1).Range("B34:B38").Copy Windows("hogehoge.xls")は、ウィンドウを操作する時につかうコードなのでブックを指定する時は、Workbooks("hogehoge.xls")を使います。また、前にも回答しましたが、セルは、複数のシートに存在しますから記録されなくても必ずシート名を書く癖をつけるとよいと思います。 編集方法を書いた書籍は、なかなかないのですが、これからVBAを使うなら必ず必要な作業になるので覚えておいてください。 では。後で……。

関連するQ&A

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • マクロを使って不特定のファイルからコピー&ペーストしたい(エクセル)

    エクセルのデータの必要な列を別のブックに入っているフォーマットにどんどん追加していけるようなマクロを作りたいと思っています。 マクロの自動記録を使ってみたのですが、特定のファイル名が入っているので、使えません。 中を見てみると Windows("A.xls").Activate Columns("b:b").select Selection.copy workbooks.open Filename:="B.xls" Windows("B.xls").Activate Range("D9").select Windows("A.xls").Activate Application.CutCopyMode = False Range("b:b").select Selection.copy Windows("B.xls").Activate Selection.Pastespecial Paste:=xlValues,Operation:=xlNone,SkipBlanks:=False,Transpose:=False . . . となっています。 このファイルAとなっている部分を、どのファイルでも実行できるようにしたいです。 後、ファイルBに貼り付けるときに一番最終行に追加していくにはどのような構文を足せばいいか教えていただきたいです。 初心者で質問の意図が伝わりにくかったらすみません.. よろしくお願いします。

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • このマクロ、何をしているのかわかりますか?

    ' Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select ActiveSheet.PasteSpecial Format:="テキスト", Link:=False, DisplayAsIcon:= _ False Range("A1:A37").Select Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Columns("A:A").Select Application.CutCopyMode = False Selection.ClearContents Range("A1").Select End Sub わかる方 お願いいたします!

  • EXCELの自動記録の修正の件

    いつもお世話になっております。 こんな質問しました。 http://okwave.jp/qa3973267.html http://okwave.jp/qa3973335.html なんとか、自動記録とOKwebの受け売りで、 やってみました。 でも、もう限界です。 教えて下さい。 【困っていること】 1.保管するファイル名を固定でなく、 見積書.XLSのH13(固定)の値で、 ファイル名を付けて保存したい。 2.台帳.XLSのT2:AG2のコピー先で、 全てが選択されている状態のため、 リンクが全項目になっている。 先頭の項目だけにしたい。T2のコピー先のみ。 3.リンクを固定でなくて、 ファイル名、表示名をT2(固定)の値、 もしくはコピー先(可変)の値でしたい。 今は、見積書.XLSとSEC01-20080001となっているのを、 可変に、例、SEC01-20080100.XLSとSEC01-20080100にしたい。 現在のコード(一部)は以下です。 Range("A1").Select ChDir "H:\2008\見積" ActiveWorkbook.SaveAs Filename:= _ "H:\2008\見積\見積書.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Windows("台帳.xls").Activate Range("T4").Select Selection.Copy Range("T2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("S3").Select Application.CutCopyMode = False Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("T2:AG2").Select Application.CutCopyMode = False Selection.Copy Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="見積書.xls", _ TextToDisplay:="SEC01-20080001" Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select ActiveWorkbook.Save 宜しくお願い致します。

  • こんなマクロなんですが。

    下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。 Range("B23").Select Selection.Copy Range("F23").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("B24").Select Selection.Copy Range("F24").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B25").Select Application.CutCopyMode = False Sheets("September 03").Copy Before:=Sheets(2)          ←ここ Selection.Copy Sheets("September 03 (2)").Select                   ←ここ Sheets("September 03 (2)").Name = "September 10"       ←ここ Range("B33").Select Application.CutCopyMode = False ActiveWindow.SmallScroll Down:=-15 Range("F12:L18").SelectEnd Sub と、まだ続くんですが、とりあえずここまでで。 番地のデータを取り込むようにしたいんですが、うまくいきません。 ←ここ っていうのがまさにそれです。

  • Excel 繰り返しマクロ

    下記のようなマクロを使ってn個あるシートの内容を「集計」シートにコピーさせるようにしました。 (自動マクロとの組合せなので、スマートではないかもしれませんが) でも、これだと「集計」シートもコピー作業を行ってしまうので、 「集計」シートはコピー作業をしないように除外したいのですが、どうしたら良いのでしょう? 実際にはシート数は30程度、コピペ項目は1シートあたり30項目程度あります。 よろしくお願いします。 ------------------------- Sub テスト2() ' For i = 1 To Worksheets.Count '案件番号等コピー ' Sheets(i).Select Range("D3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '案件名 Sheets(i).Select Range("F3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("B4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '国名 Sheets(i).Select Range("E3").Select Application.CutCopyMode = False Selection.Copy Sheets("集計").Select Range("C4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False '選択セルの解放 Application.CutCopyMode = False '行挿入 ' Sheets("集計").Select Rows("4:4").Select Selection.Insert Shift:=xlDown Next i End Sub

  • 指定セルをコピー

    A2~A5,D2~D5,G2~G5をコピーしJ~P列2~5行に値を貼付け続いて9~13行、16~20行もJ~P列に貼り付けたいのですが7~8,14~15行にはセル結合されているところもあります。VBAで下記コードを入力しましたがあまりにデータが多く何か良い方法VBAコードはありますか。(For~Nextなど使用すれば良いのでしょうか) 環境はoffice2013です。 Range("A2:A6").Select Selection.Copy Range("J2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("D2:D6").Select Selection.Copy Range("M2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False  Application.CutCopyMode = False

  • エクセルのマクロで繰り返し処理

    当方マクロ初心者ですが下記のマクロをCheckBox0~CheckBox23についてコピーするセルを変化させながら繰り返し処理を行いたいのですが、簡単なループ処理で行えますか? 教えていただければ幸いです。 If CheckBox0.Value = True Then Worksheets("sheets1").Activate  行 = Worksheets("sheets1").Range("e7")   行 = 行   Worksheets("sheets1").Range("g7:t7").Copy Windows("Books1.xls").Activate Sheets("sheets1").Select Range(Cells(行, 15), Cells(行, 15)).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If

  • マクロの意味について

    下記の様なマクロがあります。意味が理解できていません。 教えてもらえないでしょうか。 Windows("aaa.XLS").Activate Dim tbl, gyo, burank Range("i4").Select Set tbl = ActiveCell.CurrentRegion tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select Stop Selection.Copy Windows("bbb.XLS").Activate Sheets("ccc").Select Range("B2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Range("A2").Select Application.CutCopyMode = False ActiveCell.Formula = "=B2&C2&D2" Range("A2").Select Selection.Copy gyo = 0 Do gyo = gyo + 1 burank = Worksheets("ccc").Cells(gyo, 2).Text Loop While burank <> "" Range(Cells(3, 1), Cells(gyo - 1, 1)).Select    ActiveSheet.Paste Application.CutCopyMode = False Range("A2").Select