@yu_tang_さんのツイートで面白いものがありました。
Excel に「A1セルを選択してから保存する」というオプション設定をつけないことで、MS は雇用創出に絶大な貢献をしている。
— YU-TANG (@yu_tang_) 2014, 8月 20
微妙な位置のセルが選択された状態でブックが開かれると、何かもやっとすることがあるので、A1セルを選択してから保存するオプションがあると、たしかに便利です。
・・・が、Excelのオプションを眺めてみても、「Excel A1セル 選択 保存」といったキーワードで検索してみても、それらしい情報が見つからないので、標準機能では用意されていないように思います。
それならば作ってしまおう!ということで、早速作ってみました。
上記リンクからzipファイルをダウンロードして解凍すると、「SelectCellA1.xlam」ファイルが出力されます。
このファイルをExcelのアドインフォルダにコピーし(同梱の「アドインフォルダを開く.vbs」ファイルを実行すると自動的にアドインフォルダが開きます)、Excelでアドインとして読み込むと、下図のようにクイック アクセス ツール バーにトグル ボタンが表示されます。
このトグル ボタンを「ON」にしておくと、ブックを閉じたときにすべてのシートでA1セルが選択された状態で保存されます。
A1セルを選択して保存したくない場合は、トグル ボタンを「OFF」にしておけば、アドインは動作しません。
出番があるんだか無いんだかよく分からないアドインですが、興味がある方はお試しください。
ちなみに、このアドインのコードは下記のようになっていますので、アドインの機能を手直ししたい方は下記のコードを自由に改変してお使いください。
・ThisWorkbook
Option Explicit
Private WithEvents App As Excel.Application
Private flg As Boolean
Public Sub rbnSelectCellA1_onLoad(ribbon As IRibbonUI)
flg = False
Set App = Application
End Sub
Public Sub tgbSelectCellA1_getPressed(control As IRibbonControl, ByRef returnedVal)
returnedVal = flg
End Sub
Public Sub tgbSelectCellA1_onAction(control As IRibbonControl, pressed As Boolean)
flg = pressed
End Sub
Private Sub SelectCellA1()
'すべてのシートでA1セルを選択
Dim ws As Excel.Worksheet
Dim tmp As Excel.Worksheet
On Error Resume Next
Set tmp = ActiveWorkbook.ActiveSheet
For Each ws In ActiveWorkbook.Worksheets
Application.Goto ws.Cells(1, 1), True
Next
tmp.Select
End Sub
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
'未保存のファイルは無視
If Len(Trim(Wb.Path)) > 0 Then
With CreateObject("Scripting.FileSystemObject")
Select Case LCase(.GetExtensionName(Wb.FullName))
'アドインファイルは無視
Case "xla", "xlam"
Case Else
If flg = True Then
SelectCellA1
Wb.Save
End If
End Select
End With
End If
End Sub
・リボンXML
<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="ThisWorkbook.rbnSelectCellA1_onLoad" xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="tabSelectCellA1" label="SelectCellA1" visible="false">
<group id="grpSelectCellA1" label="SelectCellA1">
<toggleButton id="tgbSelectCellA1" label="SelectCellA1" screentip="すべてのシートでセルA1を選択" supertip="このボタンをONにすると、ブックを閉じる時にすべてのシートでセルA1を選択した状態で保存されます。" imageMso="SelectCell" onAction="ThisWorkbook.tgbSelectCellA1_onAction" getPressed="ThisWorkbook.tgbSelectCellA1_getPressed" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>




















この記事へのコメントはありません。