Excelファイルは最後に保存した際に開いていたシートや置いていたカーソル位置、表示倍率などが記憶されます。そのためファイルを開いた際は前回の作業終了時の中途半端な状態(シートとカーソル位置、表示倍率)で開かれてしまいます。
作業が途中なら全く問題ないのですが、例えば完成した成果物として客先へ納める際は中途半端な状態のままにしておくことはよろしくありません。
そんな場面で、保存する前に指定したカーソル位置と表示倍率に一括で変更できる『カーソル位置と表示倍率を変更できるアドイン』をExce VBAで作成しました。
当記事にはマクロの元になるExcelファイルがダウンロード可能で、VBAのコードも記事内に記載がありますので、Excel VBAやマクロが良く分からないという方でもすぐに使用できます。
当ツールを使用すれば定例業務の業務効率化が図れるかと思いますので、是非ご活用頂けたらと思います。
『全シートのカーソル位置と表示倍率に一括変更するアドイン』の概要
任意のExcelファイルを開いて、上部のリボンにある「保存前処理」タブから、カーソル位置と表示倍率を指定して、「実行」すれば全シートを対象にして、指定したカーソルと倍率に変更することができます。
基本的な機能、操作方法の説明
- 複数セルの値を一つのセルに貼り付けたい任意のExcelファイルを開きます。
- 「開発」タブの「Excelアドイン」より、作成したアドインファイルを指定(参照)します。
※選択するExcelアドインは、当ぺージ内のツールをダウンロードしてVBAコードを貼り付けたアドインファイルを選択してください。
アドインを設定出来たら、上部のタブに「保存前処理」が追加されます。
<使い方>
- 上部のタブ内にある「保存前処理」を選択します。
- 「セル位置」を指定します。(カーソルをおくセル位置のアドレス)
- 「倍率」を指定します。(右下に表示されている表示倍率)
- 「実行」をクリックします。
なお、初期表示シートの「Sheet1」は[O17]にカーソルがある状態になっています。
≪ツール実行前の状態≫
実行前の状態として、「Sheet2」は[G5]、「Sheet3」は[C6]にカーソルがある状態になっています。
≪ツール実行後≫
実行させると、全シートに対して指定したセル位置(例:A1)にカーソルが移動し、指定した倍率(100%)で表示されました。
当Excelアドインの実行は全シートが対象になります。
リボンに表示されている文字等のデザインを変更する場合は、【解説】リボンに表示されたExcelアドインのデザインを変更する方法を参照ください。
使用する際の事前準備
このページの下部にある「Excelファイルのツール」からExcelファイルを取得し、「準備の手順」内にあるVBAコードを取得したExcelファイルに記載して保存すれば、すぐに当ツールを使用できます。
以下にその手順を説明していきます。
準備の手順
「当ツールのダウンロードはこちら」からサンプル(Excelファイル)をダウンロードします。
※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、設定画面(設定シート)が入っているマクロ無しExcelファイルを公開しています
<手順1>
ダウンロードしたExcelファイルを開いて、VBE(Visual Basic Editor)を起動させます。
- Excelファイルの上部にあるリボンの「開発」タブを選択します。
- 「Visual Basic」をクリックして、VBE(Visual Basic Editor)を起動させます。
リボンに「開発」タブが表示されていない場合は、「Excel VBAを始める前に、最初にやっておくべき初期設定内容の『開発』タブを表示させる」を参照ください。
<手順2>
- 「Microsoft Excel Object」を右クリックします。
- 「挿入」を選択します。
- 「標準モジュール」をクリックします。
<手順3>
- 「Module1」をダブルクリックします。
- 表示されている右側の欄(エディター)に以下のVBAコードを記載します。
VBAのソースコードはこちら
以下のVBAコードをコピーして、「Module1」内のエディターに貼り付けます。
※VBAコードの右上のアイコンをクリックするとソースコードをコピーできます
Option Explicit
'-----(設定値)------------------------
Private Const PLACE_FIRST = "A1" '1.セル位置(カーソルをあてるアドレス)
Private Const ZOOM_INDEX_FIRST = "3" '2.表示倍率の最初のインデックス
Private Const ZOOM_VALUE_FIRST = "100" '3.表示倍率の最初の値
'---------------------------------------
Private RbRibbon As IRibbonUI 'リボン
Private PlacePoint As String '貼り付け位置
Private ZoomValue As String '表示倍率
Private BeforePlace As String '一つ前に指定した貼り付け位置
'===================================
'リボンの初期処理
'===================================
Sub onLoad_prestorage(ribbon As IRibbonUI)
'リボンの表示を更新できるようにするためにリボンをセットする
Set RbRibbon = ribbon
RbRibbon.Invalidate
End Sub
'=====================================
'「セル位置」の最初の値を取得する
'=====================================
Sub TgtCellPoint_getText(control As IRibbonControl, ByRef returnValue)
If PlacePoint = "" Then
PlacePoint = PLACE_FIRST
BeforePlace = PlacePoint
End If
returnValue = PlacePoint
End Sub
'=====================================
'「倍率」の最初の値を取得する
'=====================================
Sub drdn_tgtZoom_getIndex(control As IRibbonControl, ByRef index) ' DropDownの項目の選択を設定
index = ZOOM_INDEX_FIRST
ZoomValue = ZOOM_VALUE_FIRST
End Sub
'-------------------------
'「セル位置」に変更があった際の処理
'-------------------------
Sub TgtCellPoint_onChange(control As IRibbonControl, text As String)
On Error GoTo ErrHnd
If Evaluate("ISREF(" & text & ")") Then
PlacePoint = text
BeforePlace = PlacePoint
Else
PlacePoint = BeforePlace
MsgBox "「セル位置」は有効なアドレスを入力して下さい。"
End If
RbRibbon.InvalidateControl ("edbox_tgtCellPoint") ' editBoxの表示を更新する
Exit Sub
ErrHnd:
PlacePoint = BeforePlace
MsgBox "「セル位置」は有効なアドレスを入力して下さい。"
RbRibbon.InvalidateControl ("edbox_tgtCellPoint") ' editBoxの表示を更新する
End Sub
'-------------------------
'「倍率」に変更があった際の処理
'-------------------------
Sub TgtZoom_onAction(control As IRibbonControl, itemID As String, index As Integer)
Dim zoomNum As Long: zoomNum = Replace(itemID, "Drd_Item_", "")
'指定された倍率が数値でない場合は、一つ前の値を入れる
If IsNumeric(zoomNum) Then
ZoomValue = Str(zoomNum) & "%"
End If
End Sub
'=====================================
'実行処理
'=====================================
Sub moveCell_onClick(control As IRibbonControl)
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim wkSheet As Object
For Each wkSheet In ActiveWorkbook.Worksheets
If wkSheet.Visible = True Then
wkSheet.Select
'A1にカーソルを置く
wkSheet.Range(PlacePoint).Select
ActiveWindow.ScrollColumn = 1
ActiveWindow.ScrollRow = 1
Dim zoomNum As Long: zoomNum = Replace(ZoomValue, "%", "")
'表示スケールを変更する
If IsNumeric(zoomNum) Then
ActiveWindow.Zoom = zoomNum
End If
End If
Next
'1番左のシートを選択
Worksheets(1).Select
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
<手順4>
マクロを含んだExcelとして、ファイルを保存します。
- 左上にある「保存」アイコンを選択します。
- 「いいえ」をクリックします。(※マクロ入りファイルとして保存します。)
- ファイルを保存する際は「Excelアドイン(*.xlam)」を選択して、保存します。
- 「保存」をクリックします。
これで事前準備は完了です。
あとは「基本的な機能、操作方法の説明」で記載された方法でツールを実行できます。
なお、当マクロの開発環境は、OS:Windows10 、Excelソフトウェア:Microsoft Office 365となっており、当環境では動作確認ができていますが、他の環境で正常に動作するかは確認できていません。
正常に動作しない場合は、コメントいただければ幸いです。
また以下にて、このような業務効率化できるツールを機能ごとの一覧でまとめてますので、ご興味のある方はご覧ください。
自力で業務効率化できるツール等を作成する場合は、「オンラインITスクール」を利用するとモチベーションを保ちつつ、効率的に学習とアウトプットができると思います。
上記の「侍テラコヤ」は月額2,980円~ という日本最安級の料金でプログラミング学習ができ、今なら初めての方でも安心できる「1か月全額返金保証」があります。
自分に合わないと感じた場合は返金してもらえるため、ノーリスクで試すことができます。是非一度体験してみることをオススメします ^ ^
ツールのダウンロードはこちら
下記よりExcelファイルをダウンロードして、記事の途中にありました VBAのソースコードをツール内に組み込んで使用してください。
【Excel VBA】全シートの表示倍率とカーソル位置を一括で変更するアドインツール
※インターネットにあるマクロファイルをダウンロードすることはセキュリティ上リスクがあるので、マクロ無しExcelファイルを公開しています
他に要望等ありましたら、可能な限り改修等を対応しますのでコメント頂ければと思います。
<このツールが『結構使える!』と思ったら、下のグッドボタンを押していただけたら幸いです>