• ベストアンサー

このコードの間違い箇所が解りません!

tes1 の .xls と同じフォルダに 「tes2.xls」 という名前で保存し、閉じる。 というコードなんですが、「tes2.xls」 がなくなってしまいますが、どこが間違ってますでしょうか? 以上 よろしくお願い致します。  --------- Sub tes1() ActiveWorkbook.Close SaveChanges:=True, _ Filename:=ActiveWorkbook.Path & "\tes2.xls" End Sub ---------

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

特に間違って無いはいませんが、状況で結果が変わります。 Activeworkbook.Path が一度も保存されて無いブックの場合、パスが無い事になります。 その場合はカレントドライブに保存されるのか、私の環境で実行したら C:\tes2.xls として保存されました。 このマクロは tes1.xls にマクロの記述があり、tes1.xls の変更を tes2.xls として保存したいのでしょうか? もしそうならば ActiveWorkbook は実行時の状況で変化する可能性があるので Thisworkbook とした方が良いかなと思います。

oshietecho-dai
質問者

お礼

どうも有難うございました。 なんとか、解釈できました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 現象面としては、#1のpapayukaさんが、回答なさっている通りなのですが、コードの書き方としては、少し雑ですね。 ActiveWorkbook.Close SaveChanges:=True, Filename:=ActiveWorkbook.Path & "\tes2.xls" つまり、ActiveWorkbook.Path は、取れているのか取れていないのか、チェックもされていないままに、いきなり、Close で閉じて、保存に直結というのは、端折りすぎています。 私は、そういうコードは書かないですね。面倒でも、Path を取って変数に入れ、ActiveWorkbook を保存して、それから、Close という段階を踏みます。そうすべきだとは言いませんが、そのままだと、トラブルお構いなく、.Close が強制執行してしまうような気がします。(間違いかもしれませんが) たぶん、その保存するコードの前には、シートコピーとか、データコピーとかがあるはずですね。

oshietecho-dai
質問者

お礼

ご詳細どうも有難うございました。 おっしゃられた通りだとおいうことがわかりました。

関連するQ&A