- ベストアンサー
このコードの間違い箇所が解りません!
tes1 の .xls と同じフォルダに 「tes2.xls」 という名前で保存し、閉じる。 というコードなんですが、「tes2.xls」 がなくなってしまいますが、どこが間違ってますでしょうか? 以上 よろしくお願い致します。 --------- Sub tes1() ActiveWorkbook.Close SaveChanges:=True, _ Filename:=ActiveWorkbook.Path & "\tes2.xls" End Sub ---------
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
特に間違って無いはいませんが、状況で結果が変わります。 Activeworkbook.Path が一度も保存されて無いブックの場合、パスが無い事になります。 その場合はカレントドライブに保存されるのか、私の環境で実行したら C:\tes2.xls として保存されました。 このマクロは tes1.xls にマクロの記述があり、tes1.xls の変更を tes2.xls として保存したいのでしょうか? もしそうならば ActiveWorkbook は実行時の状況で変化する可能性があるので Thisworkbook とした方が良いかなと思います。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 現象面としては、#1のpapayukaさんが、回答なさっている通りなのですが、コードの書き方としては、少し雑ですね。 ActiveWorkbook.Close SaveChanges:=True, Filename:=ActiveWorkbook.Path & "\tes2.xls" つまり、ActiveWorkbook.Path は、取れているのか取れていないのか、チェックもされていないままに、いきなり、Close で閉じて、保存に直結というのは、端折りすぎています。 私は、そういうコードは書かないですね。面倒でも、Path を取って変数に入れ、ActiveWorkbook を保存して、それから、Close という段階を踏みます。そうすべきだとは言いませんが、そのままだと、トラブルお構いなく、.Close が強制執行してしまうような気がします。(間違いかもしれませんが) たぶん、その保存するコードの前には、シートコピーとか、データコピーとかがあるはずですね。
お礼
ご詳細どうも有難うございました。 おっしゃられた通りだとおいうことがわかりました。
お礼
どうも有難うございました。 なんとか、解釈できました。