Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
xlsmをxlsxで保存
投稿日時: 20/01/24 17:15:12
投稿者: shamo

お世話になります。
 
VBAで下記作業をしたいと思っています。
 
=====================
 作業ファイル:test.xlsm
ファイルの場所:Aフォルダ
=====================
 
====================
なんらかの処理

bookを[Bフォルダにxlsx]で保存

なんらかの処理

bookを[Aフォルダにxlsm]で保存
====================
 
====================
なんらかの処理
ActiveWorkbook.SaveCopyAs Filename:="C:Bフォルダ\test.xlsx"
なんらかの処理
ThisWorkbook.Save
Application.Quit
====================
 
Bフォルダに保存されたxlsxを開こうとすると下記エラーが発生します。
 
「Excelでファイル"test.xlsx"を開くことができません。ファイル形式またはファイル拡張子が正しくありません。」
 
どこが悪いのでしょうか。教えて頂けると助かります。

回答
投稿日時: 20/01/24 18:03:30
投稿者: 半平太

>ActiveWorkbook.SaveCopyAs Filename:="C:Bフォルダ\test.xlsx"
 
ActiveWorkbook(マクロあり)のコピーなので、
ファイルフォーマットは当然「マクロあり」なのに、
ファイル名の拡張子だけ「xlsx(マクロなし)」にしているので、
整合性が取れてないってことじゃないですか。

投稿日時: 20/01/24 18:17:25
投稿者: shamo

お返事ありがとうございます。
 
説明が不十分で申し訳ありません。
 
■やりたい事
=====================
 作業ファイル:test.xlsm
ファイルの場所:Aフォルダ
=====================
 
最初Copyでは無く、SaveAsを使って処理を試みました。
 
なんらかの処理
ActiveWorkbook.SaveAs Filename:="C:Bフォルダ\test.xlsx"
なんらかの処理
ThisWorkbook.Save
Application.Quit
 
上記VBAを実行すると、2回目の「なんらかの処理」が
何故かBフォルダに保存したbookに実行されてしまいます。
コピー処理をした時はAフォルダのファイルに実行されます。
 
Aフォルダ、Bフォルダ共に作業ファイルの名前は同じであり
仕様上変えたくありません。

回答
投稿日時: 20/01/24 18:35:02
投稿者: simple

適切なFileFormat引数を指定したうえで、SaveAsを使って下さい。
SaveAsのヘルプを熟読してください。

投稿日時: 20/01/24 19:05:18
投稿者: shamo

ありがとうございます。
 
csv出力する事で解決しました。
 
ありがとうございました。