- ベストアンサー
エクセルVBAで表のコピーと貼り付け
- エクセルVBAを使用して、エクセルファイル間で表のコピーと貼り付けを行いたい場合、マクロを使って自動化することが可能です。
- 個別ファイルにある表の内容を合計ファイルの指定した位置に移動させたい場合、マクロを作成し、コマンドボタンをクリックすることで操作を行えます。
- マクロのコードの入力方法については、素人でも簡単に実行できるように回答します。必要なコードをそのまま入力すれば、表のコピーと貼り付けが自動で行われます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Private Sub CommandButton1_Click() なのでそのボタンのあるシートモジュールに記述されていると思います。 記録マクロが記述されている標準モジュールに書き換えて動作確認してみてください。 マクロの名前は記録マクロを参考に Sub マクロ名() としてください(Private Sub ではありません) 設置したボタンから起動したければ今記述しているコードを Private Sub CommandButton1_Click() マクロ名 End Sub とすればよいでしょう。 ※シートモジュールではイベントマクロが記述できるので興味深いのですがシートを超えたコーディングなどはより知識を必要とするので結構難解です
その他の回答 (2)
- Sinogi
- ベストアンサー率27% (72/260)
「実行エラー'9’インデックスが有効範囲にありません」のメッセージウィンドウでデバッグを選択すれば該当のコードが黄背景で表示されます。どこでとまっていますか? 提示のコードでは "C:\集計\合計.xls" が開いた状態で実行しなければエラーになります。 "C:\集計\合計.xls"を開くところからコーディングしたければ、「開く」作業も記録できるので、そこからやってみましょう。
補足
"C:\集計\合計.xls"を開くところを含めて以下のように コードを改良しました。 Private Sub CommandButton1_Click() Range("A1:C3").Select Selection.Copy Workbooks.Open Filename:="C:\集計\合計.xls" Range("E1").Select ActiveSheet.Paste Windows("個別.xls").Activate ActiveWindow.WindowState = xlNormal ActiveWindow.WindowState = xlNormal End Sub このコードで貼り付けたいファイルが開けるようになりました。 しかし以下のようなエラーが出てしまいます。 実行時エラー”1004” RangeクラスのSelectメソッドが失敗しました。 デバックするとRange("E1").Selectが黄色く表示されます。 この場合はどう対処するべきでしょうか。
- Sinogi
- ベストアンサー率27% (72/260)
まずはマクロ記録をしましょう。 そのコードで必要な動作が最低限再現できるはずだから、希望の動作にするために必要な加工をします。そのときにわからないことがあれば具体的に明示して質問しましょう。 >できれば入力すべきものをそのまま回答していただけると >ありがたいです。 ひょっとしたら希望通りの回答をする人が居るかもしれませんが、まずは「自分で考える」姿勢が無ければご希望の目的に達するのは困難だと思います。
補足
アドバイスありがとうございます マクロの記憶を参考に自分なりやってみた結果が以下の通りです。 Private Sub CommandButton1_Click() Range("A1:C3").Select Selection.Copy Windows("C:\集計\合計.xls").Activate ActiveWindow.WindowState = xlNormal ActiveWindow.WindowState = xlNormal Range("E1").Select ActiveSheet.Paste Windows("個別.xls").Activate ActiveWindow.WindowState = xlNormal ActiveWindow.WindowState = xlNormal End Sub これだと、「実行エラー'9’インデックスが有効範囲にありません」 と表示させ、うまくできません。 どこを直せばよいでしょうか。
お礼
返信が送れて申し訳ありません。 Sinogiさんの回答通りやってみました。 モジュールという言葉を知らなかったので、時間がかかりましたが、 自分のやりたいことができるようになったので、非常に助かりました。 ありがとうございます。