- 締切済み
エクセル2007について質問です。
エクセル2007について質問です。 マクロを使用しファイルを開こうとすると 実行時エラー 9 と表示されます。 理由、解除方法はありますでしょうか。 教えていただけると嬉しいです。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
>回答番号:No.4 この回答へのお礼 実行時エラー'13'の件ですが 当方では再現しないので良く分かりません。 >マクロを使用しファイルを開こうとすると 見落としていました。 Auto_Openマクロには制限事項があるようです。 そのひとつに ブックが Open メソッドによってプログラムから開かれた場合は無視されます。 とあります。 下記のようにRunAutoMacrosメソッドを使えば実行できました。 回答番号:No.3 この回答への補足 でエラーがでなくなったコード(環境)で試してみてください。 Workbooks.Open (fileName:="D:\test1.xlsm").RunAutoMacros Which:=xlAutoOpen あと、Auto_Openに拘らず、他の方法を探っても良いかもしれません。 ブックのOpenイベント、あるいは、シートのActivateイベント等はどうでしょうか。
- xls88
- ベストアンサー率56% (669/1189)
Auto_Openマクロは間違いなく起動していますか? MsgBoxで確認してみてください。 Sub Auto_Open() MsgBox "カウントアップします。" Worksheets(1).Activate Worksheets(1).Range("A1").Value = Worksheets(1).Range("A1").Value + 1 End Sub あと、お分かりだとは思いますが Worksheets(1) は シート見出しが、左から1番目に表示されているシートという意味です。
お礼
ありがとうございます。 まだ悩んでいたので助かります。 MsgBoxとはどれでしょうか。 初心者過ぎて申し訳ないです。すみません。 Worksheets(1)は、左から1番目ということはわかります。 教えて頂いた通りにすると 実行時エラー'13': 型が一致しません。 と表記されるようになりました。 すみませんが、宜しくお願い致します。
- xls88
- ベストアンサー率56% (669/1189)
>回答番号:No.1 この回答へのお礼 コードは、投稿欄に手書きしたのですか? ダブルクオーテーションが脱落しています。 range("A1)+1 シートの書き方も間違っています。 worksheet(1) このままでは、実行前にコンパイルエラーになります。 転記ミスを防ぐため、VBEからコピペした方がよいです。 worksheet(1).range("A1")=worksheet(1).range("A1)+1 は Worksheets(1).Range("A1").Value = Worksheets(1).Range("A1").Value + 1 ですね。
お礼
xls88様 お返事が遅くなってしまいすみません。 ありがとうございます。 今から実行します。 うまくいかなければ、またご指導お願い致します。
補足
xla88様 実行してみましたら、エラーはでなくなりました。 ありがとうございます。 しかし、カウントアップはされませんでした。 bookじたいは私が作成したものではなく、前スタッフが作成したものなので カウントアップができないのでしょうか。 色々教えていただいたのに、すみません。
- xls88
- ベストアンサー率56% (669/1189)
下記サイトが参考にならないでしょうか。 実行時エラーの一覧 http://officetanaka.net/excel/vba/error/execution_error/index.htm インデックスが有効範囲にありません http://officetanaka.net/excel/vba/error/execution_error/error_9.htm エラーメッセージが表示された時、「デバッグ」ボタンがあると思います。 クリックすれば、VBEが起動、コードウインドウでエラー行が黄色反転表示されます。 ご自分でエラー解除出来なかったなら、ソースコードを提示し、エラー発生行を教えてください。
お礼
xls様 お礼が遅くなってしまい申し訳ありません。 回答いただきありがとうございました。 教えていただきました、URLより調べてみたいと思います。 ありがとうございました。
- mar00
- ベストアンサー率36% (158/430)
どういうマクロの記述をしたのかが分からないと 回答のしようがないとおもいますよ。
お礼
mar00様 お返事が遅くなりすみません。 そして、質問の内容が軽薄ですみません。 Sub Auto_Open() worksheet(1).range("A1")=worksheet(1).range("A1)+1 End Sub というマクロを使用しようとしたときに、質問させていただいている エラーがでました。
お礼
xls88様 度々ご回答ありがとうございます。 Workbooks.Open (fileName:="D:\test1.xlsm").RunAutoMacros Which:=xlAutoOpen を挿入してもエラーだでてしまい・・・ たくさん教えて頂いたのですが、わかりそうにもないので 諦めようかと・・・ もしお時間ございましたら、何か違う方法でカウントアップできる方法を教えていただけましたら 光栄です。 本当にありがとうございます!!