前提・実現したいこと
自分のパソコンで使う用にVBAでマクロを作成しました。
他のパソコンでも同じマクロを使いたいとなりアドインで設定したところ
「インデックスが有効範囲にありません。」とエラーが出ました。
ネットで調べたり自力でできることはやってみたのですが、エラーの解消ができず行き詰まりました。
こちらで初めて質問しますので、情報の不足等でお手数をお掛けするかもしれませんが
エラーの解消方法をご教示いただければと思います。
どうぞよろしくお願いいたします。
具体的には以下です。
【マクロの内容】
社内ネットワーク上にあるシステムから開くエクセルファイルの「"コピー元シート"」から
特定のセル(複数)の内容をコピーし、「"コピー先ファイル.xlsm"」(自分のパソコン上)の「sheet1」にペーストする。
(コードはソースコード部分に記載)
【自分のパソコン】
個人用マクロブックにマクロを書き、リボンに実行ボタンを作ってマクロを割り当てる。
コピー元ファイルとコピー先ファイルを開き、
実行時はコピー元ファイルをアクティブにし、実行ボタンを押す。
問題なく動く。
環境:Windows10 Home Excel2013
【他のパソコン】
マクロを書いたファイル「コピー先ファイル.xlam」をAddinフォルダに入れ、
エクセルを開いてアドインを有効にする。
リボンに実行ボタンを作ってそのアドインを割り当てる。
デスクトップのフォルダ内に「コピー先ファイル.xlsm」を置く。
コピー元ファイルとコピー先ファイルを開き、
実行時はコピー元ファイルをアクティブにし、実行ボタンを押す。
エラーになる。
環境:Windows10 Home Excel2016
発生している問題・エラーメッセージ
「インデックスが有効範囲にありません。」と出ます。 デバッグ画面では以下の部分(コピー動作の最初の行)でハイライトになります。 Workbooks("コピー先ファイル.xlsm").Worksheets(1).Range("C2") = ActiveWorkbook.Worksheets("コピー元シート").Range("E2")
該当のソースコード
VBA
1Sub サンプル() 2 ActiveWorkbook.Worksheets("コピー元シート").Unprotect 3 4 Workbooks("コピー先ファイル.xlsm").Worksheets(1).Range("C2") = ActiveWorkbook.Worksheets("コピー元シート").Range("E2") 5 Workbooks("コピー先ファイル.xlsm").Worksheets(1).Range("C9") = ActiveWorkbook.Worksheets("コピー元シート").Range("E6") 6 Workbooks("コピー先ファイル.xlsm").Worksheets(1).Range("C6") = ActiveWorkbook.Worksheets("コピー元シート").Range("H5") 7 8 Workbooks("コピー先ファイル.xlsm").Worksheets(1).Range("G3:G14").Value = ActiveWorkbook.Worksheets("コピー元シート").Range("J26:J37").Value 9 10End Sub 11 12(補足) 13「"コピー元ファイル"」をActiveWorkbookとして書いているのは、 14システムから開くたびにファイル名が変わる(日付等が入るため)です。
試したこと
●他のパソコンのマクロの設定は「警告を表示してすべてのマクロを無効にする」にし、
「コピー先ファイル.xlsm」の保存場所を「信頼できる場所」に設定しました。
●他のパソコンでも最初に個人用マクロブックで設定してみたのですが、
エラーになったのでアドインで設定しました。
補足情報(FW/ツールのバージョンなど)
自分のパソコン:Windows10 Home Excel2013
他のパソコン:Windows10 Home Excel2016

回答2件
あなたの回答
tips
プレビュー