はじめに
噂によると、会社によっては「Excelは全シートでセルA1を選択、一番左のシートを選択した状態で保存すべし!」というマナーが存在するそうです。
私も、人に渡すときは意識していますが、なかなか面倒なのですよね。
中にはマクロを組んで自動化しているなんていう人もいるそうです。
私は常に徹底しているわけではないため、メールに添付する前にわざわざ開いて確認したり、A1選択に直したりしています。
誰かに送る前に、ファイルを開かずにA1選択マナーを守った状態にできたら便利なのでは…?
そう思って作ったのが今回のコードです。
対象のExcelファイルをvbsファイルの上にドラッグすることで、全シートA1選択、一番左側のシートを選択した状態にしてくれます。
Excelファイルをドラッグすると全シートでセルA1選択、一番左のシートをアクティブにするVBScript
動画
コード
以下のVBScriptコードは、Excelファイル内のすべてのシートでセルA1を選択し、一番左のシートをアクティブにして保存するものです。このコードは、自己責任で使用してください。このコードの使用により生じたいかなる損害や問題についても、当ブログおよび筆者は一切の責任を負いません。
' VBScriptを使ってExcelファイルを開き、すべてのシートでセルA1を選択し、正しく閉じるスクリプト
' エラーハンドリングを有効にする
On Error Resume Next
' Excelアプリケーションオブジェクトを作成する
Set objExcel = CreateObject("Excel.Application")
' Excelアプリケーションの警告を表示しないように設定
objExcel.DisplayAlerts = False
' コマンドライン引数(ドラッグアンドドロップ)からファイルパスを取得
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
MsgBox "Excelファイルをスクリプトにドラッグアンドドロップしてください。"
' Excelアプリケーションを終了し、オブジェクトを解放
objExcel.Quit
Set objExcel = Nothing
WScript.Quit
End If
filePath = objArgs(0)
' ファイルが存在するか確認
If CreateObject("Scripting.FileSystemObject").FileExists(filePath) Then
' Excelファイルを開く
Set objWorkbook = objExcel.Workbooks.Open(filePath)
' ワークブック内のすべてのシートをループ処理
For Each objSheet In objWorkbook.Sheets
' シートをアクティブにする
objSheet.Activate
' セルA1を選択
objSheet.Range("A1").Select
Next
' 最初のシートを再度アクティブにする
objWorkbook.Sheets(1).Activate
' ワークブックを保存する
objWorkbook.Save
' ワークブックを閉じる
objWorkbook.Close False
' ユーザーに通知
MsgBox "すべてのシートでセルA1を選択し、一番左のシートをアクティブにしてファイルを保存しました。"
Else
MsgBox "有効なファイルパスを入力してください。"
End If
' Excelアプリケーションを完全に終了する
objExcel.Quit
Set objWorkbook = Nothing
Set objExcel = Nothing
' エラーハンドリングを解除
On Error GoTo 0
実行方法
- 上記のスクリプトを
SelectA1.vbs
という名前で保存します。(文字コードは「ANSI」で保存します) - デスクトップや任意のフォルダに保存した
SelectA1.vbs
ファイルのアイコンに、処理したいExcelファイルをドラッグ&ドロップします。 - スクリプトが実行され、指定されたExcelファイルが開き、すべてのシートでセルA1が選択され、一番左のシートがアクティブな状態で保存されます。
メモ帳で文字コードANSIを選択して保存する
保存する時に表示されるウインドウで文字コードを選択できます。
このA1セルを選択して保存っていうの、苦手なんですよね~。
自分が開く場合はともかく、人が開いた時のことを考えることは大事ですね。
これをデスクトップに置いて、人に渡す前に通すようにしてみます。
備考
非表示シートが混在している場合
非表示シートが混在していても、表示設定のシートはA1選択になります。
ただし、非表示シートの選択セルは、A1になりません。
おわりに
作っては見たものの、マクロより便利かといえば微妙なところですね。
ちゃんとA1選択にしたかなぁと不安になったなら自分で開いてみるのが一番ですし。
とはいえ開かずにドラッグで完了するのは魅力だなとも思ったり。
何か不備がありましたら教えて頂けますと幸いです。
最後までお付き合い頂き、ありがとうございました!
当ブログはエクセル関数の擬人化キャラクター記事をメインコンテンツとしています!
よろしければこちらの記事もどうぞ~!
コメント