VBA初心者のコピーに関する質問
- VBA初心者が、コピーの方法について質問しています。具体的には、特定の範囲をコピーする方法について詳しく知りたいとしています。
- また、最下行を判別して自動的に処理する方法についても質問しています。ブックが違う場合でも処理する方法について考えています。
- VBA初心者がVBAのコピーに関する質問を投稿しています。特定の範囲をコピーするコードや、最下行を判別して処理するコードについて教えてほしいと要求しています。
- ベストアンサー
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") という様に簡単に処理したいのですが、やはり無理なのでしょうか? ブックが違うのですが、これをなんとかこのような処理にしたいと思っています。
- hotspace
- お礼率60% (3/5)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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 とかかな?
その他の回答 (2)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>Workbooks("aaaa.xlsx").Worksheets("aaa").Range(cells(3, 1), cells(最下行, 1)).Copy _ Workbooks("aaaa.xlsx").Worksheets("aaa").Range(A3:A" & 最下行).Copy _
- leaveme
- ベストアンサー率54% (6/11)
手もとにxlsxのバージョンがないので確認できませんが、 Range(cells(3, 1), cells(50, 1) のcellsを Workbooks("aaaa.xlsx").Worksheets("aaa").Range(Workbooks("aaaa.xlsx").Worksheets("aaa").cells(3,1),・・・ で試してみませんか。
関連するQ&A
- 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で他の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初心者です。値を貼り付け について質問です。
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 を使ったらよいというところまではわかったのですが・・・。 教えてください!よろしくお願いします!
- 締切済み
- Visual Basic
- エクセルVBA ファイル名操作
エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします
- ベストアンサー
- Visual Basic
- 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のマクロ起動時のワークシート
- ベストアンサー
- Excel(エクセル)
- 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の処理を速くしたいのですが…
お世話になります data.xlsmとBook1-Book25.xlsxの 合計26ファイルを開いた状態で 以下のマクロを実行しています 私が使っているマシンでは 10分くらいかかるのですが この時間を短くすることは 出来ますでしょうか? Sub copy() Application.ScreenUpdating = False Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1:D1048576").copy Workbooks("data.xlsm").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues Range("G1:K1048576").Clear Range("A1:E1048576").copy Range("G1:K1048576").PasteSpecial Paste:=xlPasteValues Range("I2").ClearContents Range("I1048576").End(xlUp).ClearContents Range("A2:D1048576").Clear Range("O1:Q1").copy Range("S1048576").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues あとは上記をBook2,Book3と変えてBook25まで同じ式を記入 End Sub
- ベストアンサー
- Excel(エクセル)
- 異なるブック間でのセル範囲のコピー/VBA
異なるブック間でクリップボードを経由せず直接コピーしたいため 下記のマクロを記述していますが、実行エラーが発生します。 どうしてでしょうか。 ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value (補足) (1)VBA実行中のThisWorkbook、excel.xlsは別のブック ですが、同じフォルダにあります。 (2)aは数値が入る変数です。
- ベストアンサー
- Visual Basic
- エクセルVBA!(COPY) Win2000,offce2000
単純な質問かもしれませんが、 WorkBooks("test")から 別のWorkBooks("Data").WorkSheets("Sheet1")のデータの数を判定して全てをコピーして、 WorkBooks("test")のWorkSheets("Sheet2")へペーストしたいのですが、うまくいきません ↓のような感じです。 Dim wstest As Worksheet Dim wsData As Worksheet Dim wsNM As String Dim Drow As Long Sub copy() 'DataSheetのSheet名がその都度違うので、取得しました。 wsNM = wsData.Sheets(1).Name Set wsData = Workbooks("Data.xls").Worksheets(wsNM) Set wsTest = Workbooks("Test.xls").WorkSheets("Sheet2") 'データの範囲判定 Drow = wsData.Range("H65536").End(xlUp).Row '/////// ここからが???です /////// wsDataのA1からBAのDrowを範囲を指定して、Copy → wsTestのA1に貼り付けたいのですが、どうしたらよいのでしょうか? コピーしたり、直接書くようにしたりといろいろなコードを書いてみましたがダメでした。 Cellsで範囲をとる方法がわかりません。Rangeなら(A1:BA300)のように取れる範囲もCellsの時はどうしたらよいのでしょうか?(そのまま書けば、Cells(1,1):Cells(Drow,53)みたいな・・・・・) と、悩んでいるより一気にコピーするのもどうかと思いFor~Nextで1行ずつ書いていったらどうかとも考えましたが、うまくいきませんでした。 End Sub ※ Drowは、6000~20000 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 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'」が出ました、教えてください。 *上記引数は全部入りました 宜しくお願いします
- 締切済み
- Visual Basic
お礼
本当にありがとうございました。 予定通りの処理ができました。 ありがとうございました。