exelのbookまたがりでセルをコピー貼付け

このQ&Aのポイント
  • エクセル2010のvbaで、シンプルなデータ表から印刷向きレイアウトにした別BOOKにセル内容を送る方法について質問です。
  • 開いてあるbookまたがりでセル値のコピーを行いたいのですが、行と列を可変として順次ループで回すため、RANGEではなくCELLSで指定して実行するとエラーが出ます。
  • 現在の書き方ではエラーになりますが、他にうまくいく方法があるのでしょうか?手動でコピーしてエンターキーを押すとできるので、それを自動化したいと考えています。
回答を見る
  • ベストアンサー

exelのbookまたがりでセルをコピー貼付けたい

エクセル2010のvbaで質問です。 シンプルなデータ表から、印刷向きレイアウトにした別BOOKにセル内容を 送りたいのですが、うまくいきません。 開いてあるbookまたがりでセル値のコピーをします。送り側は連結セルです。 行、列を可変として順次ループで回すので、RANGEでなくCELLS(行、列)の指定で行いますが、 実行時エラーが出ます。(インデックスが有効範囲にありません) Sheets(OUTSHEET).Cells(行,列).Value = Sheets(INSHEET).Cells(行,列).Value ↑現在この書き方でエラーになります。うまくいく方法はないのでしょうか。 なお、手動でコピーして、送り側セルでエンター押すとできます。 でもそのマクロ記録ではセル番地指定なので、自動化にできません。 詳しい方、よろしくお願いします。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

Sub テスト() Dim INSHEET As String Dim OUTSHEET As String Dim 行 As Long '又は Integer Dim 列 As Long '又は Integer INSHEET = "Sheet1" OUTSHEET = "Sheet2" For 行 = 1 To 5   For 列 = 1 To 3     Sheets(OUTSHEET).Cells(行, 列).Value = Sheets(INSHEET).Cells(行, 列).Value   Next 列 Next 行 End Sub このようなコードでインデックスが有効範囲外というエラーがでるとすれば  Sheets(OUTSHEET)  Sheets(INSHEET) のシートが見つからない場合が考えられます。 変数「OUTSHEET」、「INSHEET」に設定してあるシート名に誤りがないか確認してください。 またブックを跨ぐとありますが、上記コードでは同一ブックのシートを跨ぐ書き方になります。 別ブックを指定する場合は以下のようにしてください。 Sub テスト() Dim INSHEET As String Dim OUTSHEET As String Dim INBOOK As String Dim OUTBOOK As String Dim 行 As Long '又は Integer Dim 列 As Long '又は Integer INBOOK = ThisWorkbook.Name ' = "ブック名" のように指定も可能 INSHEET = "Sheet1" OUTBOOK = "Book1" OUTSHEET = "Sheet2" For 行 = 1 To 5   For 列 = 1 To 3     Workbooks(OUTBOOK).Sheets(OUTSHEET).Cells(行, 列).Value = Workbooks(INBOOK).Sheets(INSHEET).Cells(行, 列).Value   Next 列 Next 行 End Sub

bamboo60
質問者

お礼

No.1様、早速の回答、ありがとうございます。 下の例をやったら、できました。 ご指摘の通り、bookまたがりに対する経験不足から、失敗していました。 色々なガイドのHPを見てはいたのですが、的確なご指導のおかげで、 無事解決しそうです。 大変助かりました。 ありがとうございました。

関連するQ&A

  • excelで別シートのセルを選択(VBA)

    どなたか教えてください。 シートXのB1に行番号 シートXのB2に列番号 が記載されていたとして、 別シート(Y)の、上記で指定したセルを選択する(フォーカスを移動する方法)を教えてください。 シート(X)   A   B   C  1 行  25  2 列  2  シート(Y)   A   B   C  1 2   ::::::: 24 25   (ここ) 以下のように書いても、最後の行でエラーになってしまいます。  行番号 = Sheets("X").Cells(1, 2).Value  列番号 = Sheets("X").Cells(2, 2).Value  Sheets("Y").Select  Range(Cells(行番号, 列番号)).Select

  • 複数ファイルの特定のセルをコピーして1つにまとめる

    1つのフォルダ内の複数のファイル(Sheet1のみ)から、 特定のセルをコピーして、1つのファイルにまとめたいと 思っています。 変数  wkb 複数のファイル  myb 自分のファイル (1) wkb.Sheets("Sheet1").Range("A1:D5").Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書いた場合、うまくいくのですが (2) wkb.Sheets("Sheet1").Range(Cells(1, 1), Cells(5, 5)).Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書くと、1004でエラーとなります。 本来は、Sheet1の1行目から5行目までの中で、値がある行まで コピーしたいので、(つまり1~3行目のときもあれば、1行目だけの ときもある。)(2)の方法で実行したいのです。 なんとかいい方法はないでしょうか?

  • 別bookのセルを参照するにはどうしたらよいでしょうか

    Next Forを使用したマクロで、そのNext For構文内で、別ブックのセルを参照したいのですが、どうしたらよいでしょうか。 下記のように作成してみたのですが、テストしてみると、同ブック同シートの該当セルを参照しているようで、機能しません。下記の書き方では間違っているのでしょうね・・・。 マクロ初心者で、とても初歩的な質問で申し訳ないのですが、教えていただきたく質問させていただきました。よろしくお願いします。 必要なブックは開いている状態です。 Cells(i,_)はbook1・シート"AAA"のi行・_列目を参照し、 Cells(n,_)はbook2・シート"BBB"のn行・_列目を参照し、 Cells(s,_)はbook2・シート"BBB"のセルを参照してほしいのですが・・・。 (1) book1・シート"AAA"のi行18列目のセルとbook2・シート"BBB"のn行・1列目の値が同じであれば (2) (book2・シート"BBB"のn行・1列目)の1行下をs行目としてs行・4列目のセルとbook1・シート"AAA"のi行28列目のセルが同値であれば (3) s行4列目からs行9列目を”ClearContents”するという内容です。下記のマクロは全て記述しておりませんが、ここが間違っているのは確実だと思います。今後の勉強にも是非生かしていきたいと思っておりますので、どうぞよろしくお願いいたします。 Sub test01() Dim n As Long Dim i As Long Dim s As Long For i = 6 To Workbooks("book1.xlsx").Worksheets("AAA").Cells(Rows.Count, 16).End(xlUp).Row If Cells(i, 16) = "" Then Exit For Else For n = 4 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 16) <> "" And Cells(i, 18).Value = Cells(n, 1).Value Then For s = n + 1 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 4).End(xlUp).Row If Cells(s, 1) <> "" Then Exit For ElseIf ..............

  • エクセル BooK1からBook2 への書式コピー

    過去の質問も見ましたが、どうしてもわかりません。 どなたか詳しいかた宜しくお願いします。 エクセルを2回開くと、BOOK1 とBOOK2 がでるのですが、BOOK1で作った表を BOOK2にコピーしたいのです。 文字は貼り付けできるのですが、行や列はコピーできません。 やり方があるのでしょうか? 初心者のためお恥ずかしい質問ですが、宜しくお願いします。。

  • エクセルVBAで複数セルをコピーの制御構文

    エクセルVBAで A8~I8のセルをコピーしてJ7~R7にコピーし、2行下に移り空白セルまで繰り返すという 処理をしたいと考えています Sub copy() Dim i As Integer i = 7 Do Until Cells(i, 1) = "" Cells(Cells(i,10),Cells(i,18).Value = Cells(Cells(i+1,1),Cells(i+1,9).Value i = i + 2 Loop End Sub と作ってみたところエラーで動きませんでした。 上記のプログラムはどこら辺がおかしいでしょうか? よろしくお願いします。

  • エクセルのマクロで結合セルに値を貼り付けたい

    みなさん、お知恵をください。 Excel2000です。 Sheets(1)に A:D までを結合したセルを30行ぐらい用意した状態で Sheets(2)の 単一セル A1,A2,A3,A4,A5・・・・とつづく変数 HENSUUを 貼り付けたいのです。*HENSUUは値のみの文字であったり数字です。 もちろん下記の過去質問はチェック済みです。 http://oshiete1.goo.ne.jp/qa2197173.html 物まねで作成しましたがエラーです。 Sheets(2).Select HENSUU = Range("A65536").End(xlUp).Row  ’変数最終行定義 Sheets(1).Range(Cells(1, 1), Cells(HENSUU, 1)).Value = Sheets(2).Range(Cells(1, 1), Cells(HENSUU, 1)).Value すみません。お知恵を拝借させて下さい。 よろしくお願いします。

  • エクセルでK列の最終行のセル値を指定のセルに・・・

    いつもお世話になっております。 5月に下記のコードを教えてもらい、簡単な改良や条件を追加しながら複数のシートに展開中なのですが新しいパターンが出たのでHELPです。 K列の最終行の値を同じ表のH6のセルに転記してそれを使って出た計算結果(セルH7)の値をH列の最終行のセルに転記したいのですが。 (具体的な列とセルはシートで変わる可能性があります) 下記のコードは別のシート(計算表)の特定(結果)のセルの値を指定した列に転記するコードでこれで何とかしようとしましたが歯が立たず。 なにとぞよろしくお願いいたします。 Option Explicit Sub Sample3()   Dim MyRange As Range  With ThisWorkbook   Set MyRange = _    .Sheets("入力表").Cells(Rows.Count, 5).End(xlUp)   MyRange.Offset(1, 0).Value = .Sheets("計算表").Range("J15").Value   MyRange.Offset(1, 1).Value = .Sheets("計算表").Range("J20").Value  End With End Sub

  • 複数のセルでの方法

    現在下記のようなマクロを組んであるのですが、これだと5列目が「0」のときの実行マクロです。 '5列目(工数)が「0」のとき該当する行の高さを「0」にする。 For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 If Cells(i, 5).Value = "0" Then Rows(i).RowHeight = 0 End If Next 私はこれではなくて、5列目と7列目の同じ行にあるセルに「0」がはいっていたら行の高さを「0」にしたいのです。 そこで私は If Cells(i, 5).Value = "0" Then これを If Cells(i, 5).Value = "0" And Cells(i, 7).Value = "0" Then にしたところエラーが発生しました。 良い方法があればお教えください。 よろしくお願いします。

  • エクセルで空白のセルを探して貼り付け

    エクセルVBAでSheet2の指定のセルをコピーして、 Sheet1にある表の中の指定の列の空白セルを探して貼り付けるVBAを作成したいのですが、うまく出来ません。 Sheet1の表は1行目、2行目は見出しの項目が並んでいます。 3行目から50行目までは値を入力するようになっていて、 51行目はそれらをの集計が表示されるようになっています。 下記のVBAを作成したら3行目~50行目までの空欄に貼り付けず、 52行目に貼り付けてしまいます。 ----------------------------------------------------------- Sheets("Sheet2").Range("B6").CurrentRegion.Copy Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False ------------------------------------------------------------ 修正して頂けないでしょうか? 宜しくお願いします。

  • エクセルマクロで指定したセルの値を表示変更し転記

    エクセルマクロで指定したセルの値を表示変更して指定したセルに転記したい セルA列に書式が標準で 20101117と入っています。 これをB列にセルの値も表示も共に11/27としたいです。 (セルの値は2010/11/17でセルの表示は11/27ではまずいです。) A列にデーターがあるまで繰り返したいです。 行数は作業毎で常に違います。 以下の記述では出来ませんでした。 よろしくお願いします。 Sub 日付() 行 = 2 Do If Cells(行, 1).Value = "" Then Exit Do Cells(行, 2).Value = Mid(行, 1,5,2) &"/"& RIGHT(行, 1,2) 行 = 行 + 1 Loop End Sub

専門家に質問してみよう