別のExcelのデータをVBAでコピー&貼り付けする方法

このQ&Aのポイント
  • ExcelファイルのXとYのデータをVBAでコピー&貼り付けする方法について教えてください。
  • Xの任意の連続したセルをコピーし、Yで貼り付ける処理をVBAで実現したいです。
  • 同じような質問をしたが、回答が得られませんでした。VBAの得意な方に教えていただきたいです。
回答を見る
  • ベストアンサー

別のexcelのデータをコピペするVBA

お世話になります。 ExcelファイルのXとYがあります。 Xから、「複数セルを選択」して、Yに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Xの任意の連続したセルを選択してコピー (2)Yに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Xのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? 本当に勝手で申し訳ございませんが、  ・上記を実現するVBAのコード  ・実際に動作確認されたVBAのコード を教えて頂けないでしょうか? 実は、同じような質問を2回ほどしたのですが、実現できない 回答ばかりでした。 VBAの得意な方、何卒宜しくお願い致します。 ※普通レベルの方は無理と思われますので

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

  • ベストアンサー
  • NoOkWave
  • ベストアンサー率50% (1/2)
回答No.4

実質的な内容は 回答No3 と同じ 確認は EXCEL2003 EXCEL2010 両方問題なし 以下手順 メニューより Xのブックを新規作成 メニューより Yのブックを新規作成 1.[Xのブック]に以下のマクロ作成 Sub Macro1() ActiveSheet.Paste Destination:=ActiveCell End Sub 2.[ツール][マクロ] オプションで Macro1 のショートカットキーを作成 [Ctrl]+[Alt]+A キーで実行できるようにセット 3.手動で、Xの任意の連続したセルを選択してコピー (Xのコピー範囲の枠の線上が点滅する) 4.Yに移動して、貼り付けしたいセルを選択 (Xのコピー範囲の枠線は点滅したまま) 5.[Ctrl]+[Alt]+A でコピーできる事を確認 (Xのコピー範囲の枠線は点滅した状態で)

kgyqk433
質問者

お礼

>確認は EXCEL2003 EXCEL2010 >両方問題なし ありがとうございます。 >Macro1 のショートカットキーを作成 >[Ctrl]+[Alt]+A キーで実行できるようにセット ショートカットで登録しないと、クリップボードの内容が 飛ぶんですかね?? ショートカット=OK,マクロの実行=×でした。 >実質的な内容は 回答No3 と同じ ショートカットがポイントなので、 NoOKWaveさんの回答だけが正しいと思います。 NoOKWaveさんからなら、「環境書け!」などのお小言言われても 受け入れますが、何も仰らないとは。。。 さすが、できる男はスマートですね!!!!

その他の回答 (6)

回答No.7

クリップボードは使えないので ユーザーフォームを用いた案。 Xにユーザーフォームを作成して CommandButton1と2を配置。 Private r As Range Private Sub CommandButton1_Click() Set r = Selection End Sub Private Sub CommandButton2_Click() r.Copy ActiveCell End Sub 上記をユーザーフォームのモジュールに。 Sub try() UserForm1.Show 0 End Sub 上記を標準モジュールに。 (1)手動で、Xの任意の連続したセルを選択してマクロ:tryを実行しCommandButton1を押す。 (2)Yに移動して、貼り付けしたいセルを選択しCommandButton2を押す。 (3)(1)で取得したデータをペーストされる

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.6

マクロを実行するとき、どんな方法で実行しているんでしょうか? エクセル画面のメニューのマクロから実行すると、コピーモードが解除されるためペーストコマンドはエラーになります。 エラーにさせないためには、次の方法があります。 ・貼り付けたいセルを選択した後に、VBAのコード画面を表示させてその画面から実行する。 ・貼り付けたいシートにボタンを置いてそれにマクロを登録する(この場合はそのシートにしか貼り付けできない)。 ・マクロのオプションでショートカットキーを割り付けて、ショートカットキーで実行する。 コードは、 ActiveSheet.Paste だけでOKです。

kgyqk433
質問者

補足

>本当に勝手で申し訳ございませんが、 > ・上記を実現するVBAのコード > ・実際に動作確認されたVBAのコード >を教えて頂けないでしょうか?

回答No.5

ANo.3さんのコードがほぼそのままだと思いますが。 セルまで選択しているのですから,単純に Dim s As Worksheet Set s = Workbooks("Book2").ActiveSheet s.Paste とやるだけです。 # Book1からBook2にコピーする場合。 特別難しいこともありません。 というか,ANo.3さんの回答のコードを見て,対象オブジェクトを置き換えただけです。 ANo.3さんの回答の意味は,「WorksheetのPasteメソッド使えば対象セルにクリップボードの内容をペーストできる」です。 in Excel 2010 1. 新規のBookを2つ (Book1, Book2) 作り,Book1.Sheet1のA1:C1にあ,い,うとそれぞれ記述 2. Book1.Sheet1に上記のVBAコードをSub Testの中身として追加 3. Book2.Sheet1で適当にセルを選択 4. Book1.Sheet1でA1:C1を選択,コピー 5. Book1.Sheet1.Testを実行 > 「クリップボードは空です。」 > のメッセージが出ます。 質問者自身が質問の(1)の手順をすっ飛ばしていませんか。 技術者ならこのメッセージで最初に疑うのはまずはコピーしていないことだと思いますが……。

kgyqk433
質問者

補足

>本当に勝手で申し訳ございませんが、 > ・上記を実現するVBAのコード > ・実際に動作確認されたVBAのコード >を教えて頂けないでしょうか? 動作確認されましたか? >質問者自身が質問の(1)の手順をすっ飛ばしていませんか。 >技術者ならこのメッセージで最初に疑うのはまずはコピーしていないことだと思います >が……。 コードを見る=自分で作成した方が早いです。現実的にコードを見る・作成する時間が ないから聞いているのです。

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.3

No2 は間違えていました。 ActiveSheet.Paste Destination:=ActiveCell だけでよかったです。

kgyqk433
質問者

補足

「クリップボードは空です。」 のメッセージが出ます。

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.2

http://www.moug.net/tech/exvba/0150091.html のサンプル3より  Destination:=Range("A1") の部分を ActiveCell に変更 (1)(2) の作業を行った後、マクロを実行するイメージで行えば 普通に出来ると思いますけど まぁ、質問する時は エクセルのバージョンくらいは表記して欲しいものです

kgyqk433
質問者

補足

>(1)(2) の作業を行った後、マクロを実行するイメージで行えば >普通に出来ると思いますけど 実際に試して頂けたでしょうか? 質問文にも書きましたが、  >・実際に動作確認されたVBAのコード でお願いします。

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

>※普通レベルの方は無理と思われますので ためしに以下のサイトのExcelで質問を挙げてみては? http://www.vbalab.net/ ここで無理って言われたなら今までの回答は 間違ってなかったと思いますよ。 ⇒あるいはやりたい事が上手く伝わっていないのか???

kgyqk433
質問者

補足

>VBAの得意な方、何卒宜しくお願い致します。

関連するQ&A

  • 別のexcelにコピペしたい

    お世話になります。 ExcelファイルのAとBがあります。 Aから、「複数セルを選択」して、Bに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、Aの任意の連続したセルを選択してコピー (2)Bに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「Aのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? お手数ですが宜しくお願い致します。

  • 別のexcelにペーストしたい

    お世話になります。 ExcelAとExcelBがあります。 ExcelAから、「複数セルを選択」して、Excelbに「貼付け」する処理の 一部をマクロ(vba)で作成したいと思っております。 具体的ステップとして (1)手動で、ExcelAの任意の連続したセルを選択してコピー (2)ExcelBに移動して、貼り付けしたいセルを選択 (3)(1)で取得したデータをペースト です。 (3)の箇所を「ExcelAのマクロ」を呼び出して実現したいと 思っているのですが、どのようにマクロ(VBA)を記載したら実現できるでしょうか? お手数ですが宜しくお願い致します。

  • Excelのマクロ(VBA)について教えてください。

    このようなマクロをつくりたいのですがうまく作れません。 セルをコピーした後、貼り付け先のセルを選択して、 <ここからがマクロ> 形式を選択して貼り付け→罫線を除くすべて <マクロ終了> 他の貼り付け方法はうまくできるのですが、「罫線を除くすべて」だけができません。 参考までにこれが作られたVBAです。 Sub Macro1() Selection.PasteSpecial Paste:=xlAllExceptBorders, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Sub 以上です。 どなたかアドバイスよろしくお願いします。

  • Excel. Vba

    Vbaでセルの値だけコピーしたいのですが可能でしょうか? 数式を埋め込んだセルに、数値が入力されたセルを形式を値だけ貼り付けにして貼り付けても数式が消えてしまって値だけ入ってます。 数式は消さず、値だけコピーというのはvbaで実現可能でしょうか?

  • EXCEL VBAのオフセットの使い方について

    EXCEL VBAのOffsetの使い方で質問があります。 (1)選択したセルをコピーする (2)選択したセルの下10行全部に貼り付ける という処理をしたいのですが、 i = Selection.Address With Range(i) .Copy .Offset(10, 0).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats End With というコードだと、10行下のセルのみに貼り付けがされてしまい、 下10個のセル全部に貼り付けができません。 Range()を使うのではないかと思ったのですが、うまく出来ませんでした。 よろしくお願いいたします。

  • VBAにて、グラフのデータ範囲を取得したい

    VBAにて グラフをクリックして、アクティブにした状況にて、 マクロを走らせると、グラフを描くのに用いたX軸とY軸のデータの セル上の番地を教えてくれるマクロが分かれば教えてください。

  • excel VBA

    excel VBA 下記のようなwwwww.xlsの形の文字列xで、 xは英字 数字_数字 英字.klsの形式で_はひとつだけ xの処理で 質問1 文字変数Xを処理して変数yを求めるマクロコードのヒントを     (つまり.xlsを除き、続いて文字や_を取り去る) 質問2 文字変数Xを処理して変数zを求めるマクロコードのヒントを     (つまり文字のみを取り去る) (例)x=FILE20041211_1212system.xls    y=FILEsystem    z=20041211_1212.xls   

  • AccessからExcelにコピペするコードの作成

    Accessのカレントレコードをコピーし、特定のExcelブック(仮称A)にペーストするVBAコードを書いてみたのですが、 ペーストが上手くできず困っています。 (下記コードの「'任意のExcelブックAの、シートB内のセルA2にペーストする」の部分です) ------------------------------- '任意のExcelブックAを開く Dim Objxls As Object Dim strFile As String Dim wb As Object strFile = "C:\Users\ExcelブックAのある場所" Set Objxls = CreateObject("Excel.Application") With Objxls .Visible = True .Workbooks.Open strFile End With 'Accessのカレントレコードを選択 DoCmd.RunCommand acCmdSelectRecord 'コピーを実行 DoCmd.RunCommand acCmdCopy '任意のExcelブックAの、シートB内のセルA2にペーストする With Objxls.Workbooks(Objxls.Workbooks.Count) .Sheets("B").Range("A2").Paste End With ------------------------------- VBA初心者のため、複数のサイトを参考にしながらコードを作成しています。 説明が不足している部分がありましたら申し訳ございません。 どなたか知恵をお貸し頂けますと助かります。

  • EXCELでの計算結果のみをコピペしたい

    Windows Vista Office2007 です。 Sheet 1 で計算した結果のみをコピーして、 Sheet 2 の任意セルへ貼り付けたいと思います。 計算結果のセルを右クリックして、「形式を選択して貼り付け」を クリックしたいのですが、「形式を選択して貼り付け」が活きていません。 どのようにすれば宜しいのでしょうか。 よろしくお願いいたします。

  • シート内の一部のセルを別シートにコピー

    Excelのマクロ(VBA)の記載方法について お分かりになる箇所だけでも結構ですので、 どなたかご教授を願い致します。 シートX   A    B   C  1 data1 data2 data3 2 x   data7 data8 3 data4 data5 data6 4 data7 data8 data9 シート Y   A   B   C    D 1 length 3  (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz  (任意) (任意) (任意) 4 (空白)(任意) (任意) (任意) 上記のような2つのシート(同一Excelファイル内)があって、 シートXの一部のセルを次の条件(1~4)でシートYにコピーしたい場合 1.コピー元の列の数は、シートYの "length"と書かれたセルの右となりの数字   とする(上記では3なので、A,B,C列をコピー対象) 2.コピー元の行の数は、シートXの1~4行目までとするが、   シートXのA列のセルが"x"だったら、その行は全てコピーしない。 3.コピー先(Y)の列は、コピー元(X)の列と一つずれてコピー(BならCに、CならDに) 4.コピー先(Y)の行は、シートYのA列で1行からで始めて空白セルになった行からコピー開始。 (上記では、A列で空白セルのある4行目からコピー) 上記条件で、下記のシートYを作成したいのですが、 この場合どようなマクロ(VBA)で実現できますでしょうか。 コピー結果(シートY)  A     B   C   D 1 length  3  (任意) (任意) 2 xxxx  (任意) (任意) (任意) 3 zzz   (任意) (任意) (任意) 4 (空白) data1 data2 data3 5 (任意) data4 data5 data6 6 (任意) data7 data8 data9

専門家に質問してみよう