【VBA】「wk.Close SaveChanges:=True」で上書き保存してくれない

背景

・全てのシートのセル「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

タイトルとURLをコピーしました