• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAで他のワークブックからのコピぺの仕方について)

Excel VBAで他のワークブックからのコピぺの仕方

このQ&Aのポイント
  • Excel VBAを使用して、他のワークブックからのコピーアンドペーストの方法について教えてください。
  • 開いている全てのワークブックから指定したセルの内容とシート名を別のワークブックにコピーしたいです。
  • マクロを作成する方法がわかりません。どのようにすればよいでしょうか?

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim wb As Workbook For Each wb In Workbooks MsgBox "このブックの名前は、" & ThisWorkbook.Name & vbLf _ & "今選んでいるブックの名前は、" & wb.Name Next End Sub ご参考程度で。

kokonkokon
質問者

お礼

ありがとうございます。 いろいろと自分なりに考えてみたのですが、 Sub Sample1() c = 2 For Each W In Workbooks For Each ws In Worksheets Cells(12, c) = ws.Name Range(Cells(2108, c), Cells(3108, c)) = W.ws.Range(Cells(2108, 2), Cells(3108, 2)) c = c + 1 Next Next End Sub ここまではできたのですが、 どうしてもエラーが出てきます。 Range(Cells(2108, c), Cells(3108, c)) = W.ws.Range(Cells(2108, 2), Cells(3108, 2)) でエラーが出るのですが、どうすれば良いのでしょうか? 何卒よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.7

No.5です。 今更ですけど最初の質問で、 >Sub Mac() とありますがMAC版のExcelですか? もしそうなら未経験のため外しているかもしれません。 (こちらWinXP環境のみでしか、いじったことありませんので)

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

下記を参考にしてみてください。 テストはBook1を開き、そこから xxx.xls, yyy.xls を開き下記実行しました。 Book1のSheet4というシートのA列に、各シートのA1セルの値を、順次代入してます。Book1のSheet4以外のシートのA1セルのデータも集めています。 Msgboxは確認用で、確認が済めば削除してください。 ーー Sub test01() i = 1 Dim ws As Worksheet For Each wb In Workbooks For Each sh In wb.Worksheets If wb.Name = "Book1" And sh.Name = "Sheet4" Then GoTo p01 'MsgBox wb.Name & " " & sh.Name MsgBox wb.Name & "= " & sh.Name & "= " & "A1= " & sh.Range("A1") Workbooks("Book1").Worksheets("sheet4").Cells(i, "A") = sh.Range("A1") i = i + 1 p01: Next Next End Sub ーー 結果 Sheet4のA列 A1:A9 tts1 yys2 yys3 東京 tts2 0.666666667 tts4 はい tst1 一致を確認しました。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.5

>開いているブックX.xlsというファイルのXというシートがあり Xと言うブックにコードを書いたとして Xと言うシートがアクティブでない状態でもと言うなら、 >Set ws1 = ThisWorkbook.ActiveSheet を Set ws1 = ThisWorkbook.Worksheets("X") としてみて下さい。 その位しか思いつきませんでした。。。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

別段提示したコードでちゃんとデータは纏まっているようですけど。。。 (当方Excel2002で検証) 貼り付ける位置は2108行目から3108行目で宜しいのですよね? だいぶ下の方に貼り付けるわけですし、スクロールしてみても何もないのでしょうか? あとは実際のファイルでないと検証も難しいです。

kokonkokon
質問者

お礼

現在、開いているブックX.xlsというファイルのXというシートがあり、そのほか開いている001.xls、002.xls、003.xls・・・というファイルの中の001、002、003・・・というシートのBの2108行目から3108行目のデータをX.xlsというファイルのXというシートのA、B、C、・・・列目の2108行目から3108行目にコピーしたいということですよ。 どうしてもうまくいかないのですが・・・

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

>そのままコピぺして試してみたのですが、エラーは出ないのですが、 >何も起きないのですが・・・ >一体どこが悪いのでしょうか? 取り敢えずどのようなデータなのか、どのようなシートレイアウトなのか、どこに書き出すのか が不明ですので提示されたコードのみで考えてました。 1.コードはどのブックに書くのか。  そしてそのブックのどのシートに書き出すのか。  その書き出す位置(行列)はどこなのか。 2.データを取り出すブックとそのシートのデータ範囲はどこなのか。 等々の情報が必要かも。

kokonkokon
質問者

お礼

001.xls、002.xls、003.xls・・・というファイルの中の001、002、003・・・というシートから それぞれ同じ箇所のセルからデータを抜き出したいのですが。 Range(Cells(2108, c), Cells(3108, c)) = W.ws.Range(Cells(2108, 2), Cells(3108, 2)) 1.どのブックかというのは開いているブックで開いているシートです。 書き出す位置(行列)は上記の通りです。 2.データを取り出すブックとそのシートのデータ範囲も上記の通りです。 何卒よろしくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>開いている全てのワークブック にはコードを書いたブックは含まれないと仮定しています。 Sub Sample1_next() Dim wb As Workbook Dim ws As Worksheet Dim ws1 As Worksheet Dim c As Long Set ws1 = ThisWorkbook.ActiveSheet c = 2 For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then For Each ws In wb.Worksheets With ws1 .Cells(12, c) = ws.Name .Range(.Cells(2108, c), .Cells(3108, c)).Value = _ ws.Range(ws.Cells(2108, 2), ws.Cells(3108, 2)).Value c = c + 1 End With Next End If Next Set ws1 = Nothing End Sub 試してないですが、たぶんこんな感じかと。 Range,Cells がどのシートなのか(どのブックの)を明確にする事が必要かと。

kokonkokon
質問者

お礼

ありがとうございます。 そのままコピぺして試してみたのですが、エラーは出ないのですが、 何も起きないのですが・・・ 一体どこが悪いのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAでエラー、Changeの使い方が×?

    エクセルVBAでBOOK1のsheet1とsheet2とsheet3があり、 sheet1とsheet2の全ての情報をsheet3にコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それをsheet1かsheet2の中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 sheet1とsheet2とsheet3に Private Sub Worksheet_Change(ByVal Target As Range) Call マクロ() End Sub を入れ、 標準モジュールに Sub マクロ() Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub をやって、sheet1かsheet2のセルを変更すると エクセルが固まってしまいます。 デバックでは最初の Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") がよくないようです。 書き方が間違っているのでしょうか?

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • ExcelVBA 他ワークブックへデータ書き出し

    いつもお世話になっております。 教えてください。 現在開いているExcelブックの特定箇所をボタンワンプッシュで、他Excelシートまでデータを書き出ししたいと考えておりますが、エラー発生のため、マクロ実行することができず困っております。コードを訂正する必要があると思うのですが、どのように訂正したらよいかわからず、ご教示頂けないかと思います。よろしくお願いします。 ex)添付ファイルを参照ください。現在開いているシート(シートA.xls)の特定箇所(A1)をマクロボタンを押下すると、他Excelシート(Cドライブの【シート】フォルダ内の【シートB】.xls)までデータを書き出ししたい(書き出す場所はシートAと同じA1)と考えております。 ※小生作成VBAコード Sub test() Workbooks("C:\シート\Bシート.xls").Worksheets("sheet1").Range("A1").Value = Workbooks("Aシート.xls").Worksheets("sheet1").Range("A1") End Sub

  • Excel VBAを使って、Excelデータを別のExcelファイルに取り込みします

    報告書にexcel VBAを使って、(報告書を開いたまま)報告書のデータを別のexcelファイル(一覧)に取り込みします。 Sub k() Dim ブック As Workbook Set ブック = Workbooks.Open("c:\テスト\" & "一覧.xls") ブック.Worksheets("Sheet1").Cells(3, 2) = Worksheets("企業情報シート").Cells(3, 3) End Sub 報告書の"Worksheets("企業情報シート").Cells(3, 3)"は書き方がおかしいみたいで、正しい書き方を教えてください。

  • Excel VBA 指定シートの取込

    こんにちは。 ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、 シートが無かった場合の処理方法がわかりません。 現在のコードは下記の様になっております。 With Workbooks.Open"BOOK1.xls" .Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") .Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") .Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1") .Close End With Book1に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?

    ここで教えていただいたマクロで ActiveSheet.Paste Destination:=Workbooks(\"book1.xls\").Worksheets(\"Sheet1\").Range(\"A1\") のペースト部分を書式を除きたいので PasteSpecial Paste:=xlFormulas でやりたいのですが、どう組み合わせたらいいのかわかりませんでした。 おしえていただけませんでしょうか?

  • ExcelのVBAについてです。

    例えば"Book1.xls"という名前のブックの"Sheet1"という名前のシートの一部を削除する。 これをVBAでやらせようと思うんですが、"Book1.xls"を開かずに行うことはできるんでしょうか。 Workbooks("Book1.xls").Worksheets("Sheet1").Range("C7:M51").ClearContents のようにしてるんですがうまくいきません。 "Book1.xls"はLAN上のブックで実際はフルパスで指定してます。 よろしくお願いします。

  • コピー後に値のみ貼り付け エクセル、VBAの記述について

    マクロ初心者です。 エクセルで選択範囲を指定後コピーし、 自動的に別のシートの末尾に貼り付けられるようにしたのですが、 この内容のまま「貼り付け」を「値のみ貼り付け」に訂正する場合 どのように変更すればいいのか、教えてくださると嬉しいです。 宜しくお願いいたします。 Sub 選択範囲をコピー後、指定シートの末尾に貼り付け Worksheets("sheet1").Activate Range("b11:I17").Copy Workbooks("book2.xls").Worksheets("Sheet1").Activate 行 = Range("B1").CurrentRegion.Rows.Count + 1 ActiveSheet.Paste _ Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行) End Sub

  • excel vba

    テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2     3     4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7

  • VBA ワークシートオブジェクトがうまく使えない

    以下のサブプロシージャ、動きません。 Sub main() Dim Thissheet As Worksheet Set Thissheet = ActiveSheet Workbooks.Open Filename:="Book2.xlsx" Range("A1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 1) Range("B1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 2) ActiveWindow.Close End Sub 機能:Book1.xlsxで上記マクロを起動すると、Book2.xlsxを開きセルの一部ををBook1にコピーし、閉じる エラーメッセージ: コンパイルエラー メソッドまたはデータ メンバーが見つかりません。 Range("A1").Copy Destination:=ThisWorkbook.Thissheet.Cells(1, 1) この行のThissheet.で引っかかります。 ちなみにThissheetの代わりにWorksheets(1)を用いるとうまくいきます。 Thissheetを用いた場合、何がマズイのでしょうか? 以下の認識で書いてますが、誤りあるでしょうか? ThisWorkbook=マクロが納められているワークブック、つまりBook1.xlsx Activesheet= 行を実行した時にアクティブになっているワークシート、ここではBook1.xlsxのマクロ起動時のワークシート

このQ&Aのポイント
  • DCP-J987Nの印刷が同じ内容でしか変更できない問題に困っています。
  • Windows10で使用しており、無線LANで接続しています。
  • 関連するソフトは筆ぐるめ29ですが、電話回線の情報はわかりません。
回答を見る

専門家に質問してみよう