• ベストアンサー
  • 困ってます

VBAについてです。

VBAについてです。 当方VBA初心者です。初歩的な質問があり投稿しました。 Workbooks("aaaa.xlsx").Worksheets("aaa").Range("A3:A50").Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはできるのに Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(50, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") というコピーはどうしてできないのでしょうか? また、最下行を判別して Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(最下行, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") という様に簡単に処理したいのですが、やはり無理なのでしょうか? ブックが違うのですが、これをなんとかこのような処理にしたいと思っています。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数107
  • ありがとう数3

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

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

With Workbooks("aaaa.xlsx").Worksheets("aaa") .Range(.cells(3, 1), .cells(50, 1)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") End With とか最下行ありなら With Workbooks("aaaa.xlsx").Worksheets("aaa") .Range(.Cells(3, 1), .Cells(Rows.Count, 1).End(xlUp)).Copy _ Workbooks("bbbb.xlsx").Worksheets("bbb").Range("A2") End With とかかな?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

本当にありがとうございました。 予定通りの処理ができました。 ありがとうございました。

関連するQ&A

  • VBA セルコピーのエラー

    こんにちは。 Excel VBAの初心者です。 セルコピーについて教えてください。 シート1のセル範囲e4~aj4を、シート2の同じ場所に、そのままコピーします。 Worksheets(1).Range("e4:aj4").Copy Destination:=Worksheets(2).Range("e4:aj4") 上記だと普通に通るのですが、コピー元の行に変数を使用したくて、その前に一度下のように書き換えました。 Worksheets(1).Range(Cells(4, 5), Cells(4, 36)).Copy Destination:=Worksheets(2).Range(Cells(4, 5), Cells(4, 36)) するとエラー1004(アプリケーション定義またはオブジェク定義のエラー1004(アプリケーション定義またはオブジェク定義のエラー)が出て、通らなくなります。 単純なことだと思うのですが、初心者ゆえ困っております。 どなたかご教示いただけますと幸いです。 よろしくお願いいたします。

  • エクセル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

  • 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のマクロ起動時のワークシート

その他の回答 (2)

  • 回答No.2

>Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(最下行, 1)).Copy _ Workbooks("aaaa.xlsx").Worksheets("aaa").Range(A3:A" & 最下行).Copy _

共感・感謝の気持ちを伝えよう!

  • 回答No.1

手もとにxlsxのバージョンがないので確認できませんが、 Range(cells(3, 1), cells(50, 1) のcellsを Workbooks("aaaa.xlsx").Worksheets("aaa").Range(Workbooks("aaaa.xlsx").Worksheets("aaa").cells(3,1),・・・ で試してみませんか。

参考URL:
http://tutorials.cross-one.jp/index.php?cat=5

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • VBAで特定の値がある行を連続コピーしたい

    Excel 2003 OS XP Professional SP3 VBAは自分でコードは組むことはできませんので見よう見まねでやっているレベルです。 A B C D E の列があり、行の1行目はタイトル行になっています。  A  B  C   D  E ***  ***  ***  ***  *** ’  AAA  BBB  CCC  DDD 111 222 333 '   EEE  FFF  GGG  HHH '   III  JJJ  KKK  LLL 444 555 '   MMM  NNN  OOO  PPP A列にカンマがある行にはB~E列に値が入力されていて、A列にカンマ以外の値が入力されている 場合にはB~Eには何も入力されていません。 A列にカンマ以外の値の時、カンマのある行のデータを次のカンマのある行までフィルハンドルをドラッグしてコピーするよう にしたいです。  A  B  C   D  E ***  ***  ***  ***  *** ’  AAA  BBB  CCC  DDD 111  AAA  BBB  CCC  DDD 222  AAA  BBB  CCC  DDD 333  AAA  BBB  CCC  DDD '   EEE  FFF  GGG  HHH '   III  JJJ  KKK  LLL 444  III  JJJ  KKK  LLL 555  III  JJJ  KKK  LLL '   MMM  NNN  OOO  PPP   sub 連続コピー() Dim r As Long Dim n As Long r = 2 n = r + 1 Do While Worksheets("sheet1").Cells(r, 1) <> "" If Worksheets("sheet1").Cells(r, 1).Value = Worksheets("sheet1").Cells(n, 1).Value Then r = n n = n + 1 Else Range(Cells(r, 2), Cells(r, 5)).Copy Range(Cells(n, 2), Cells(n, 5)) n = n + 1 End If Loop End Sub 自分なりに考えてみましたが、ぜんぜん動きません。 どなたかご教授をお願いします。

  • VBA初心者です。値を貼り付け について質問です。

    VBA初心者です。 値を貼り付け について教えてください。 Sub test() With Workbooks("A.xls").Worksheets("sheet1") .Range("A1").Copy Workbooks("Bxls").Worksheets("sheet1").Range("B2") .Range("A2").Copy Workbooks("B.xls").Worksheets("sheet1").Range("B4") End With End Sub コピーする方に計算式が入っているので 値を貼り付け したいのですが、どうすればいいのでしょうか? PasteSpecial Paste:=xlPasteValues を使ったらよいというところまではわかったのですが・・・。 教えてください!よろしくお願いします!

  • 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に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • VBA マクロ実行時エラー 1004

    すみません (1)Workbooks(p_addr_Name).Worksheets(sheet_check).Range(Cells(7, 2), Cells(19, 2)).Copy (2)Workbooks(p_SH_weekly).Worksheets("Sheet1").Range(Cells(7, i), Cells(19, i)).PasteSpecial Paste:=xlPasteAll その際(2)で「実行時エラー'1004'」が出ました、教えてください。 *上記引数は全部入りました 宜しくお願いします

  • エクセルVBA 他ブックの同じ行に貼り付け(可変)

    皆さんこんにちは。 度々こちらでお世話になっております。 エクセル2013使用のVBA初心者です。 ブック1の「検索」シートで絞り込み結果が1つになるまで 絞り込んだ後の話です。 ブック1「検索」シートで絞り込み、結果が1行になったら その行をコピーして ブック”データベース.xlsx”のSheet1の(検索シートと)同じ行に 貼り付けをしたかったのですが 下記のコードですと”データベース.xlsx”を開いて保護をやめるところまで動くのですが 貼り付け箇所でエラーが出てしまいます。 エラーは「1004RangeクラスのPasteSpecialメソッドが失敗しました」です。 原因はなんとなく「行」をWith Sheets("検索").AutoFilter.Rangeじゃないところで 使っているからかな?と思っているのですが 『可変の検索シートの絞り込み結果行と同じ行を  他ブックで選んで貼り付け』 の書き方が分かりません。 ブック1検索シートの絞り込み結果1行(可変)をサーバー上にある データベース.xlsx”のSheet1の同じ行に貼り付ける方法を 教えていただけないでしょうか。 --------------------------------------------------------------------- With Sheets("検索").AutoFilter.Range With .Resize(.Rows.Count - 1).Offset(1) Dim 行 As Integer 行 = .Columns(1).SpecialCells(xlCellTypeVisible).cells(1).Row Sheets("検索").Range("A" & 行).EntireRow.Copy Workbooks.Open Filename:="¥¥***.**.**.**¥DATE¥データベース.xlsx" Workbooks("データベース.xlsx").Sheets("Sheet1").Unprotect Workbooks("データベース.xlsx").Sheets("Sheet1").Range("A" & 行).PasteSpecial Workbooks("データベース.xlsx").Sheets("Sheet1").Protect Workbooks("データベース.xlsx").Save Workbooks("データベース.xlsx").Close

  • VBA VLOOKUPとセルのコピーができません

    助けてください マクロでVLOOKUPを使い、データを持ってこようとしてますが上手くいきません やりたいこと:Sheet3(在庫を貼付)にある4列目の数値を、Sheet1のG列で照合し、Sheet1の9列目に持ってきたい Sheet1:cells(6,9)にVLOOKUPの式を入れる 関数で言えば=VLOOKUP($G,Sheet3!C:F,4,FALSE) cells(6,9)をcells(7,9)からcells(2000,9)までコピー これを実行すると 「アプリケーション定義またはオブジェクト定義のエラーです。」 とでて止まってしまいます ActivesheetsやWorkbooks、WorksheetsやSheetsで設定したりしてもエラーは変わりますが 止まってることには変わりありません どうしたら動くようになりますか? Sub vlook() Dim Nname As String macx = "ルーチンワーク20130223.xlsm" 'マクロ用ファイル「ルーチンワーク20130223.xlsm」がある Sheets(1).Select Workbooks(macx).Activate Worksheets(1).Activate ddir = Cells(33, 2) 'cells(33,2)にフォルダ情報がある Nname = Dir(ddir & "在庫推移.xlsx") '在庫推移.xlsxというVLOOKUPしたいファイルがある Workbooks.Open Filename:=ddir & Nname Workbooks(Nname).Activate Sheets(1).Select Worksheets(1).Activate 'VLOOKUPで在庫を持ってくる ActiveCell.FormulaR1C1 = "=VLOOKUP(RC7,'在庫を貼付'!C[-6]:C[-3],4,FALSE)"   '自動記録マクロから持ってきてます Worksheets(1).Activate Sheets(1).Select Range(Cells(6, 9)).Copy Destination:=Sheets(1).Range(Cells(7, 9)) 'この行でエラーが出る

  • VBA初心者です。

    VBA初心者です。 Excel 2010のVBAで、 ワークシートのSheet1のオブジェクトモジュールに 他のシートから別のシートにコピー&ペーストをしたいと思い、 以下のプログラムの記述をすると、 アプリケーション定義またはオブジェクトの定義エラーとなってしまいます。 Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy Destination:=Worksheets("Sheet3").Cells(3, 1) (「d」は変数です。セルの範囲指定は、実際に記述するときは 範囲が広範になるので、行数列数で把握できるようにCellsを使っています) エラーになる理由と解決法をご教授いただければと思います。

  • ExcelVBAでの異なるファイル間のセルのコピーについて

    ExcelVBAでの異なるファイル間のセルのコピーについて セルのコピーでエラーが除去できなく困っています 同じファイル内のコピーでは、以下のコードが可能なのですが ----------------------------------------------------------------- Set XL1 = CreateObject("Excel.Application") Set WB1 = InXL1.Workbooks.Add Set XL2 = CreateObject("Excel.Application") Set WB2 = InXL2.Workbooks.Add WB1.WorkSheets(1).Range("A1").Copy WB1.WorkSheets(1).Range("A2") ----------------------------------------------------------------- 別ファイルへのコピーではエラーになってしまいます WB1.WorkSheets(1).Range("A1").Copy WB2.WorkSheets(1).Range("A2") なぜそうなってしまうのかわかりません 別ファイルへのコピー方法をご存じの方は是非教えて下さると助かります

  • Excel VBAで参照先の変換

    ExcelのVBAでBook1.xlsxのSheet2とSheet2を参照しているSheet3をBook2.xlsxにコピーするプログラムを作成しているのですが、Sheet3のコピーが思うように行きません。 具体的にはSheet3が参照しているSheet2をBook1.xlsxからBook2.xlsxに変換する所です。 下記のようなプログラムを作成しました。 strDirectory = ThisWorkbook.Path strSrcBook = "Book1.xlsx" Workbooks.Open Filename:=strDirectory & "\" & strSrcBook, ReadOnly:=True Set wsSrc = Workbooks(strSrcBook).Worksheets("Sheet2") Set wsDst = ThisWorkbook.Worksheets("Sheet1") wsSrc.Copy After:=wsDst Set wsSrc = Workbooks(strSrcBook).Worksheets("Sheet3") Set wsDst = ThisWorkbook.Worksheets("Sheet2") wsSrc.Copy After:=wsDst wsDst.Range("D:D").Replace "[*]", "" Workbooks(strSrcBook).Close SaveChanges:=False Sheet3のD列がSheet2を参照しているのですが、上記を実行すると開くファイルの選択を要求され、キャンセルし続けると実行が完了しますが、コピーされたSheet3の参照先が正しく変換されずエラー表示となってしまいます。 「wsDst.Range("D:D").Replace "[*]", ""」が完了する前に「Workbooks(strSrcBook).Close SaveChanges:=False」が実行されてしまうのが原因と思われるのですが、実際のプログラムでは開くBookは1つではなくSheet1に記載したリストを順番に開いてコピーするという事を行っている為、作業が完了したBookは閉じるようにしたいです。 どの様に修正すれば「wsDst.Range("D:D").Replace "[*]", ""」が完了するのを待って、「Workbooks(strSrcBook).Close SaveChanges:=False」が実行されるように出来るのでしょうか?

  • VBA 実行時エラー 1004 の表示が出る

    下記のVBAを作成していてエラーが出てしまいます やりたいこととしてはボタンを選択すると 特定のシート[AAA]の最終行を取得して 別シート[BBB]の2行目をシート[AAA]との最終行までコピーすることです --- Private Sub CommandButton_Click() Sheets("AAA").Range("A1", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1).Resize(, 3).Formula = Sheets("BBB").Range("B2:D2").Formula End Sub