Excelマクロ 別のファイルの情報をコピーして貼り付ける

このQ&Aのポイント
  • Excelマクロを使用して、別のファイルから情報をコピーして貼り付ける方法について教えてください。
  • Excel 2007のマクロを作成していますが、別のファイルから必要な情報をコピーしたいです。
  • 別のファイルが2つある場合、Excelマクロをどのように記載すればいいですか?
回答を見る
  • ベストアンサー

Excel マクロ 別のファイルの情報をコピーして貼り付ける

Excel 2007のマクロで、別のファイルの情報をコピーして貼り付ける マクロを作成しています。 別ファイルが1つであれば下記のマクロでできました。 他に別ファイルがもう1つあり、全部で2つのファイルからそれぞれ 必要なシートから情報をコピーしたいと思います。 ※各シート名は異なります。 別ファイルが2つになった場合、マクロをどのように記載すればよろしいでしょうか。 よろしくお願いいたします。 Sub Test1() Dim myCellall As Range Set myCellall = Sheets("すべて").Range("A1") With Workbooks.Open("\") With .Worksheets("すべて") .Range(.Range("A1"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall End With .Close False End With End Sub

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

基本方針としては,1枚目を貼り付け終えたあと貼り付け先になるmyCellallの位置を更新して,あとは同じ手順を繰り返します。 どこをどのように調べたら「1枚目貼り付け後の次の貼り付け先」を決められるのか,実際のシートの姿をよく見てアイデアを考えます。 作成例: Sub Test1r1()  Dim myCellall As Range  Set myCellall = Sheets("すべて").Range("A1")  With Workbooks.Open("\")   With .Worksheets("すべて")    .Range(.Range("A1"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall   End With   .Close False  End With ’ここから追記  set mycellall = thisworkbook.worksheets("すべて").cells.specialcells(xlcelltypelastcell).offset(1).end(xltoleft) ’以下同文  With Workbooks.Open( 2冊目のブックを開く)   With .Worksheets("すべて")    .Range(.Range("A1"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall   End With   .Close False  End With End Sub

hyogara777
質問者

お礼

ご回答ありがとうございました。自分が考えていたマクロができました。今後はイメージをして作業を進めていきたいと思います。

関連するQ&A

  • Excel マクロ 別ブックの情報をコピーする方法

    他のブックの情報をコピーして貼り付けるマクロを作成しています。 2種類のブックから情報をコピーして貼り付けます。 Sub MailTemp() Dim myCellall As Range Dim myCellyoso As Range Dim myCellfor As Range Set myCellall = Sheets("すべて").Range("A3") With Workbooks.Open("\") With .Worksheets("すべて") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellall End With .Close False End With Set myCellyoso = ThisWorkbook.Worksheets("予測").Range("A3") Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") With Workbooks.Open("\別ブック") With .Worksheets("予測") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellyoso End With With .Worksheets("結果") .Range(.Range("A3"), .Cells.SpecialCells(xlCellTypeLastCell)).Copy myCellfor End With .Close False End With End Sub 下記の箇所でエラーが発生して、先に進みません。 原因を調べていましたが、わかりません。 Set myCellfor = ThisWorkbook.Worksheets("結果").Range("A3") エラーメッセージ 実行時エラー'9' インデックスが有効範囲にありません。 アドバイスを頂けますでしょうか。 よろしくお願いいたします。

  • エクセルマクロでコピーの質問です。

    エクセルマクロでコピーの質問です。 こんにちわ^^; よくわからないエラーが起こっているため困っています。 1.xlsという別のエクセルを開いて指定のセルをコピーし、貼り付けるということで下記のマクロを作ってみました。 ちなみにマクロを書いたファイルはsum.xlsで、1.xlsのコピーしたいセルには数値のみ入っています(書式は会計)。 Sub before() Workbooks.Open Filename:="c:¥aaa¥1.xls" Range("a1:a5").Copy ActiveWindow.Close Range("a1").PasteSpecial End Sub しかし、このマクロをThisWorkbookに貼り付けると文字列として保存されてしまいます。 そこで最後の行を Range("a1").PasteSpecial Paste:=xlValues にするとエラー400が出ます。 一応、sheet1(sheet1)に貼り付けて実行してみたところ、コピー自体ができませんでした。 まだ余りエクセルマクロを理解していないため、なぜなのかが良くわからないのでアドバイスをお願いいたします。 ちなみに使っているのはoffice2003のエクセルです。

  • Excelマクロで他シートへの抽出:エラー

    こちらの質問 http://okwave.jp/qa/q4760155.html を参考に、エクセルマクロを作りました。 Sheet1の10列目(J)に@が入っている行をすべて、 Sheet2に抽出表示します。コードは次になります。 Private Sub Worksheet_Activate() With Sheets("Sheet1") .AutoFilterMode = False .Range("A1:N1").AutoFilter .Range("A1:N1").AutoFilter Field:=10, Criteria1:="@" .Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") .AutoFilterMode = False End With End Sub このマクロを実行すると、確かにSheet2では抽出が行われるのですが、 同時にSheet1の内容も抽出された内容に変わってしまいます。 どこに問題があるのでしょうか。 よろしくお願いします。

  • Excel2000のマクロが上手くいきません

    はじめまして、よろしくお願いします。 仕事で下記のような条件のマクロを作っています。 全くの初心者ですが、 いろんなHPを見て例文を書き写したりしながらなんとか作ってみたのですが、 ですが、どうしても上手く実行されません。 お恥ずかしい話ですが、 ものすごく根本的な簡単なミスをしているだと思うのですが、 どの部分が間違っているかも正直分からなくなってきました。 ご教授いただければ幸いです。 「AAファイルのS1シートのA2~B10をBBファイルのS2シートA2~B10へコピーし、 BBのS2シートB2~B10までの中でデータの入っていない行は削除する」 マクロはBBファイルに書き込んでいます。 また、AAとBBの両方を開いて実行もしています。 Sub Workbooks("AA.xls").Worksheets("S1").Range("A2:B10").Copy _ Workbooks("BB.xls").Worksheets("S2").Range("A2") Application.ScreenUpdating = False On Error Resume Next With Columns("A2:A10") .SpecialCells(xlCellTypeConstants).EntireRow.Hidden = True .SpecialCells(xlCellTypeFormulas).EntireRow.Hidden = True .SpecialCells(xlCellTypeVisible).EntireRow.Delete .EntireRow.Hidden = False End With Application.ScreenUpdating = True End Sub お手数おかけいたしますが、よろしくお願いいたします。

  • Excel マクロ 他ブックのシートの範囲選択した内容を別ブックのシートにコピーする方法

    他ブックのシートの範囲を選択しコピーした内容を、別ブックのシート に貼り付けするマクロを作成しています。 現在の情報であれば、下記のマクロで解決できます。 Sub Test1() Dim myCellall As Range Dim myCellsom As Range Dim myCelluri As Range   Set myCellall = Sheets("すべて").Range("A1") Set myCellsom = Sheets("総務").Range("A1") Set myCelluri = Sheets("売上").Range("A1") With Workbooks.Open("\") .Worksheets("すべて").Range("A1:K17").Copy myCellall .Worksheets("総務").Range("A1:K88").Copy myCellsom .Worksheets("売上").Range("A1:K81").Copy myCelluri .Close False End With End Sub ただ、他ブックのシートのデータは変動するため、行と列の変更を行わなければいけません。行と列の増減があっても、自動的に対応できるマクロを書きたいと思います。 どのようなマクロを追加すればよろしいでしょうか。 よろしくお願いいたします。

  • EXCEL 別シートのコピー(3)

    こんにちは。 こちらで以前こちらで質問をさせていただき、EXCELの別ブックのシートからコピーをしています。 元のブックのコピーを作り、そこに入力してもらい、元のブックにコピーをしています。(同じフォルダに入れて) Private Sub CommandButton1_Click() Dim myBook As Workbook Set myBook = Workbooks.Open(ThisWorkbook.Path & "\コピー元ブック.xls")  with workbooks("コピー元ブック.xls").worksheets("シート名").usedrange workbooks("貼り付け先ブック.xls").worksheets("シート名").range(.address).value = .value end with end sub ここでブックがない場合、そのブックを飛ばしてあるブックだけコピーしたい場合は、どうしたらいいでしょうか。いろいろやってみましたが、コピーできませんでした。 教えてください。

  • エクセルマクロ 抽出したデータを別のシートへコピーしたい

    マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 【1】シート名「データ」をA列でオートフィルタ抽出して、別シートにコピーする。 【2】別シートにコピーしたデータに外枠罫線をつける。 【3】シート名「データ」には塗りつぶしがあるので、別シートにコピーされた塗りつぶしは「なし」する。 【4】シート名「Sheet1」の1~2行目をコピーし、別シートの1~2行目に挿入し、シート名「データ」に戻る。 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、今はコピーして「あ行」の部分を書き換えています。(かなり面倒です) 最終的には、抽出されたそれぞれのシートを別々のブックにしたいとも思っています。 長々とすみませんが、どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 Sheets("データ").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="あ行", Operator:=xlAnd Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Sheets("あ行").Select Range("A1").Select ActiveSheet.Paste Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Cells.Select Selection.Interior.ColorIndex = xlNone Sheets("Sheet1").Select Rows("1:2").Select Selection.Copy Sheets("あ行").Activate Rows("1:1").Select Selection.Insert Shift:=xlDown Range("A1").Select Sheets("データ").Select Range("A1").Select

  • Excel 2007 マクロ AdvancedFilterについて(再

    Excel 2007 マクロ AdvancedFilterについて(再投稿) 先ほど同じ質問を投稿したのですが、画像を添付していませんでした。削除できないため再度投稿しました。 元データ(Sheet1)の表が4つあります。元データは画像に添付しました。 この表で製品名かぼちゃで「空白」と「-」以外の数値が入っている行をSheet3にコピーして貼り付けるマクロを作成しています。 <Sheet2> 製品名その他 かぼちゃ<> かぼちゃ- 下記マクロを実行したところ、Sheet3にはA列の番号のみ表示されます。 Sub Test1() Sheets("Sheet1").Range("A1:E34").AdvancedFilter xlFilterCopy, _ Sheets("Sheet2").Range("A1", Sheets("Sheet2").Cells.SpecialCells(xlCellTypeLastCell).Address), _ Sheets("Sheet3").Range("A1") End Sub <Sheet3> A列は空白です。 B列からE列は表示されていません。 どのように修正すればよろしいでしょうか。

  • 複数ファイルのA1だけを抽出して別ファイルにしたい

    すみませんが、教えてください。 特定のフォルダ内に入っているcsvのA1列目のみ抽出して別ファイルにしたく、検索したところ 同じように困っていた方がいたようで、参考にさせていただいたのですが、 以下を実行しても インデックスが有効範囲にありませんと出ます。 各csvファイルのシート名は 1000近くあるファイル全て違い、別々の名前(コード00-000とか)になっています。 (エクセルで開いたとき) お手数ですが、教えていただきたくお願いいたします。 参考にしたマクロです。 Sub macro1() Dim myPath As String Dim myFile As String myPath = "ファイルの場所\" myFile = Dir(myPath & "*.xls") Do Until myFile = "" Workbooks.Open myPath & myFile With Workbooks("集約.xls").Worksheets("Sheet1").Range("A65536").End(xlUp) .Offset(1, 0).Value = myFile .Offset(1, 1).Value = Workbooks(myFile).Worksheets("概要").Range("C3").Value End With Workbooks(myFile).Close savechanges:=False myFile = Dir() Loop End Sub 宜しくお願いいたします。

  • マクロ EXCELの範囲をコピーして貼付け

    『End(xlDown).Row』で取得した値を使ってセルの範囲指定&コピーを行い、 新しく追加したシートに貼り付けたいのですがうまくいきません。 Sub attendanceJoin() Dim MaxRow As Integer 'シートの最終行の値 Workbooks("test.xls").Activate Dim NewWorkSheet As Worksheet Set NewWorkSheet = Worksheets.Add() '新しいシートを追加する MaxRow = Worksheets(2).Range("M1").End(xlDown).Row  'A列の最終行を取得 NewWorkSheet.Name = "統合"  '新しく追加したシートの名前を変更 With Workbooks("test.xls") .Worksheets(2).Range("A1:M&MaxRow").Copy   'コピーするセルの範囲を指定    '↑ここでエラー。.Worksheets(2).Range("A1:M38").Copy を指定するイメージです。 .Worksheets("統合").Range("A1").PasteSpecial End With End Sub どなたか間違っている箇所のご教示お願い出来ますでしょうか。 どうぞよろしくお願い致します。

専門家に質問してみよう