- ベストアンサー
Excel2007 VBA修正時のエラーと解決策
- Excel2007でVBAを修正する際に発生するエラーについて解説します。
- コードの一部が動かない原因としては、WorksheetsやSheetsのインデックス番号が間違っている可能性があります。
- 解決策としては、ActiveWorkbookやActiveWindowを使用してコードを修正することでエラーを回避することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
色々原因は考えられるけど、2003でそれまで正常に動作していたことを考慮すると、 文法上のエラーは考えにくいですね。気になるのはコピー元とコピー先のワーク ブックの作成したエクセルのバージョンです。 WB_Nameが2007のブックでnmFileが2003のブックだとするとエラーになりますが これが原因? まず >MsgBox "エラー発生" を MsgBox Err.Number & " " & Err.Description に変更して、エラー番号と エラーの原因を出力してみたらどうでしょう? または、コピー先を2007で保存しなおしたファイルに変更してみては?
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問には簡略化して、要点を書くことは必要だが、やりすぎると、読者にはよくわからなくなったり、追試が出来なくなる。 2003以前で Sub test01() pthFolder = CurDir MsgBox pthFolder nmFile = "01化.xls" Workbooks.Open Filename:=pthFolder & "\" & nmFile nmSheet = Workbooks(nmFile).ActiveSheet.Name MsgBox nmSheet WB_name = "01化B.xls" S_MAIN = "Sheet1" Workbooks.Open Filename:=pthFolder & "\" & WB_name Workbooks(WB_name).Worksheets(S_MAIN).Copy After:=Workbooks(nmFile).Sheets(nmSheet) End Sub をやるとうまく行く。 わたしの場合、 "01XX.xls"と "01XXB.xls"は存在しSheet1という名のシートも存在する例。 ーー Workbooks.Open Filename:=pthFolder & "\" & WB_name が必要(オープンしておくことが)のようだ(当たり前だが)。 その辺大丈夫ですか。 ==== Googleで「2003 2007 シートコピー」で照会すると沢山の記事が出ます。 めぼしいものを読んでみて、思い当たる節が無いか考えてみてください。
- Siegrune
- ベストアンサー率35% (316/895)
思い当たること 1.WB_Nameが.xlsxのEXCELファイル(2007用)で、 nmFileが.xlsのEXCELファイル(97-2003互換)だと、 最終行の行番号がちがうのでエラーになる。 2.(2)と(3)の間で、 Workbooks(WB_Name).Activate を実行してみてください。 EXCEL2007はコピー元のBookをActiveにしておかないとエラーになったような。 (記憶が定かでないのと手元には2003しかなく確認できないので。)
お礼
大変わかりやすい対処方法を教えていただき、ありがとうございました。 今回は、コピー元がExcel2007、コピー先がExcel2002であり、MsgBoxを表示したところ「1004」のメッセージが表示されました。 また、コピー先をExcel2007に変更したところ、シートを追加することができました。 ありがとうございました。