はじめに
「エクセルはA1にカーソルを合わせて保存するのがマナーだよ」
そんなことを言われることがあるらしい。
そうツイッターランドで目にした。
かくいう自分も言われたことがある。
というわけで作ってみた。
Sub A1セーブ() ' ' 全シートA1にカーソルを合わせます ' 全シート拡大率を100%にします ' 最終的に1シート目のA1にカーソルにカーソルを合わせます ' ' For Each objSheet In ThisWorkbook.Worksheets objSheet.Activate objSheet.Cells(1, 1).Select ActiveWindow.Zoom = 100 Next ThisWorkbook.Worksheets(1).Activate ActiveWorkbook.Save End Sub
カーソル合わせるだけじゃなくて拡大率を100%に戻す処理を入れてみた。
これをあなたのVBEに貼り付けてあげると動くようになります。
左ペインの[ブック名]-[Microsoft Excel Objects]-[ThisWorkbook]で開いた画面に
貼ってください(画像参照)
多分バージョン依存はしないと思います。
自分はExcel2013を使用しています。
一つひとつ見ていきましょう
なんかの処理
Next
For Eachは見ての通りループします。
ThisWorkbook.WorkSheetsでブック内のワークシートを順繰りに見ていきます。
その一回一回で扱うワークシートのオブジェクトをobjSheetという変数で定義しましょう。
という意味です。
n枚目のワークシートをアクティベート(選択状態に)します。
n枚目のワークシートのA1セルにカーソルを合わせます。
アクティベートしている画面の拡大率を100%にします。
(=n枚目のワークシートの拡大率を100%にする)
ThisWorkbook.Worksheets(1).Activate
1枚目のシートをアクティベート(選択状態に)します。
アクティブなワークブックを保存します。
(=このマクロを実行しているファイルを保存します。)
と、こんな感じになります。
処理をまとめる
1枚目のワークシートの拡大率を100%にする
2枚目の(以下略)
3枚目の(以下略)
・・・(ワークシートの数繰り返す)
1枚目のシートを選択状態にする
保存する
という流れを実現したのが先ほどのコードです。
VBAに関してはOffice TANAKAという神のようなサイトがあるので
学習コスト自体は低いと思います。
http://officetanaka.net/excel/vba/
やりたいことを細分化して、都度調べていきながらやればある程度こなせるようになります。
さいごに
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。