背景
・全てのシートのセル「A1」を選択し、スクロールを一番上にしたい
・表示している一番左のシートを選択したい
事象
・「wk.Close SaveChanges:=True」だと保存してくれない
・原因不明。Excelのバグ?
解決方法
「wk.Save」で保存し「wk.Close」で閉じるようにする
サンプルプログラム
Option Explicit
Sub sample()
Const FILE_PATH As String = "C:\Users\user\Desktop\temp\aiueo.xlsx"
Dim fso As Object
Dim wk As Workbook
Dim ws As Worksheet
Set fso = CreateObject("Scripting.FileSystemObject")
Set wk = Workbooks.Open(Filename:=FILE_PATH, UpdateLinks:=0)
'シート数分繰り返し
For Each ws In wk.Worksheets
'セル「A1」を選択
ws.Activate
ws.range("A1").Activate
'スクロールを一番上へ
wk.Windows(1).ScrollRow = 1
wk.Windows(1).ScrollColumn = 1
Next
'表示している一番左のシートを選択
For Each ws In wk.Worksheets
If ws.Visible = xlSheetVisible Then
ws.Select
Exit For
End If
Next
'Excelファイルを上書き保存して閉じたいが、保存してくれない
'wk.Close SaveChanges:=True
'以下で保存だと保存してくれる
wk.Save
wk.Close
Set wk = Nothing
Set fso = Nothing
End Sub