問題
.xlsmを.xlsxで保存しようとしたらエラーが出た。
wb.SaveAs Filename:=FileName, FileFormat:=xlWorkbookNormal
実行時エラー '1004':
'SaveAs' メソッドは失敗しました: '_Worksheet' オブジェクト
え?なんで??
びっくりしすぎて、エラーのスクショ撮るの忘れたw
MS技術情報
[XL2002] エラー メッセージ : 'SaveAs' メソッドは失敗しました
【発生条件】
VBA マクロを使用してワークシートを保存している。
かつ
ファイル形式に、定数 xlWorkbookNormal を指定している。
【回避策】
ファイル形式の指定を定数 xlWorkbookNormal から 1 に変更します。
【へなちょこメモ】
技術情報は2002だけど、2016でも発生
workbookを保存でも発生
やってみた@
とりあえず、MSの言う通りにやってみる。
wb.SaveAs Filename:=FileName, FileFormat:=1
これで実行したら、確かに実行時エラーは出なくなった。
が。
保存したファイルを開きなおすと・・・
ちょw
MSさーーん!
ちゃんとテストしてよー!!
つか、XlFileFormat 列挙には、1っていう値は載ってないようだが・・・。
1って何だ?
xlWorkbookNormalは、-4143でしょ?
やってみたA
XlFileFormat 列挙に使えそうなものはないか、がさごそ・・・。
あった。
wb.SaveAs Filename:=FileName, FileFormat:=xlWorkbookDefault
これだとエラーも出ず、開きなおしても問題ない。
xlWorkbookDefaultは
Excelのオプション>保存>ブックの保存のファイルの保存形式
かな?と思って、試しに.Excel 97-2003 ブック(*.xls)に設定して、xlWorkbookDefaultで保存してみたけど、.xlsxで保存されてた。
デフォルトって何だろう??
曖昧なものはあんまり使いたくないけど、しゃーない。
MSさん、新機能なんてもういらないから過去のバグ直してけろ。
タグ:Excel VBA