Excelマクロで、SaveAs後のThisWorkbookについて教えてください。 Sub 保存()

Visual Basic | Excel97閲覧

ベストアンサー

0

>「ThisWorkbookのVBAに実行が移動してしまう」 が変な感じですみません。 SaveAsでブックのコピー(複製)が成功すると、 画面がコピー先(複製されて新たにできたほう)の内容に 勝手に切り替わりますが、 同様に、「ThisWorkbook」も、 コピー元ブックではなく、「コピー先ブックがThisWorkbookとして」 「入れ替わる」という意味です。 でもって、F8キーのステップ実行をしてても、 実行の行が律儀にまったく同じ行に移動するので、 気付きにくい・・・という感じです。 これもうまく言えなくてすみません。 自分は初心者なので間違ってたらスルーしてください。

ThanksImg質問者からのお礼コメント

ありがとうございました!

お礼日時:6/25 12:47

その他の回答(2件)

1

>今、セルA1にこんばんはと入っているのは、実行したブックですか? >それとも、東京というフォルダに入っているブックですか? 答えは、「東京というフォルダに入っているブック」です。 厳密には「どちらでもない」が答えです。ブックを保存するまでは、変更内容は東京フォルダに保存されたブックには反映しません。 <補足> まず、ブックを開いた瞬間、ブックの情報はハードディスクのX番地からメモリーにコピーされます。 この時点でブックの情報はハードディスクのX番地とメモリーの両方にあります。 >ThisWorkbook.SaveAs "\\777\東京\" & ActiveWorkbook.Name SaveAs をすると、メモリー上にあるブックの情報がハードディスク上の新しい場所、Y番地に保存されます。 これ以降、メモリー上にあるブックに何らかの変更を加えて保存すると、Y番地に書き込まれます。X番地は何の影響も受けません。 >ThisWorkbook.Range("A1").Value="こんばんは" メモリー上のブックに新たに「こんばんは」が書き込まれました。 しかし、この変更はハードディスクのY番地にあるブックにはまだ反映しません。保存して初めてY番地にあるブックに書き込まれます。もし保存しなければ、変更内容はY番地にあるブックには反映しません。

1人がナイス!しています

>ThisWorkbook.Range("A1").Value="こんばんは" もちろん、これは文法的に間違っているのでエラーになります。

0

こんにちは。 saveasの実行前に、A1セルに1234と数値があったとしたら、 その状態で、保存が実行され、 ThisWorkbook.Range("A1").Value="こんばんは" は、エラーです。 activeworkbook.activesheet.range("A1").value = "こんばんは" などだったら、エラーは出ません。 ま、転記の文字が違っているだけなんでしょうけど、 「保存した後で、なにかして、end sub」なんですから、 ブックを閉じるときに、「保存しますか」と確認がでます その段階で「保存しない」としたら、「こんばんは」の文字は、破棄です エクセルは「指示したことしかしません」 保存してから、 いろいろ作業するなら、はっきりと自覚しながらコード、作ってください