お世話になっております。
普段実務でVBAを使っているのですが、新しく組んだマクロで上書保存が失敗してしまう事象が起きています。
こちらを解決したいのですが、同様事象の解がWEB上に無くでして、ご相談させて頂きたくです。
〇やりたい仕様
①特定のEXCELブックを開く
②powerqueryで構成されたクエリのデータ更新を行う
③上書き保存をする
④閉じる
〇当該挙動を再現したコード
Set wb = Workbooks.Open("ファイルパス")
#ここでウィンドウ大きさを標準サイズにしています。
Set window1 = Windows(1)
window1.WindowState = xlNormal
#ここでpower queryを更新しています。
ActiveWorkbook.RefreshAll
#ここでActivebookを上書き保存しています。
#また保存時エラーが出ても無視して上書保存ができる仕様にしています。
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
#ここでActivebookを閉じる作業をしています。
ActiveWorkbook.Close SaveChanges:=False
〇前提
まず前提として、同じコード構造を持った(違いはパスのみ)ブロックがこの後に2つ続きます。
そちらでは正常に上書き保存まで完了し、特に問題はありません。
power queryの中身に関しては違いがあり、下記のような違いがあります。
正常な挙動をしているブック:クエリ数が1つ
保存が失敗するブック:クエリ数が11つ
〇問題挙動
上書保存に失敗致します。
具体的にはクエリ更新が終わったのち、EXCEL上のツールバー上で「保存が失敗しました」となります。
マクロ上ではエラーとして失敗はしていません。
その後別Windowが表示され、名前をつけて保存が表示され、
「E02243」のような別ファイル名で保存という形になります。
ちなみにこのファイルを既存の正ファイルに上書き保存しようとするとできませんでした。
ここが何の原因でこうなっているのが、全く分からずで困っております。
何卒ご助力頂けますと幸いです。
よろしくお願いいたします。
> ①特定のEXCELブックを開く
> ②powerqueryで構成されたクエリのデータ更新を行う
> ③上書き保存をする
> ④閉じる
> 上書保存に失敗致します。
> 具体的にはクエリ更新が終わったのち、EXCEL上のツールバー上で「保存が失敗しました」となります。
> マクロ上ではエラーとして失敗はしていません。
> ActiveWorkbook.RefreshAll
RefreshAll メソッドを呼び出さずに、
その「特定のEXCELブック」を正常に上書き保存
出来るかどうかは既に確認されたのでしょうか。
> その後別Windowが表示され、名前をつけて保存が表示され、
> 「E02243」のような別ファイル名で保存という形になります。
> ちなみにこのファイルを既存の正ファイルに上書き保存しようとするとできませんでした。
例えば元のフルパスが極端に長ければ(218 文字を超えているなら)、
そういう現象が起こる可能性はありますが。