.xls を .xlsx で保存
あるシステムからダウンロードしたExcelファイルが、拡張子「.xls」だった。一月に一ファイルで、3年分ある。なぜか開くのに時間が掛かるし、容量も大きい。
そこで、一つずつ開いては「.xlsx」で保存する地味な作業に突入して、二つ目で嫌になった。そうだ、マクロにやってもらおう。
まずは、開いて閉じるところだけ作ろう。作戦は、こうだ。
- 受け取ったパスに存在するExcelファイルを開く
開くとき、リンクは更新しない。
また、元ファイル保護のため読み取り専用で開く。 - マクロが含まれているか否かを確認。
- 2.の結果によって、「.xlsx」または「.xlsm」で保存。
- 開いたファイルを閉じる。
今回は、以下のチェックを割愛した。
- ファイルの存在確認。無いものは開けない。
- 拡張子が「.xls」かどうかの確認。それ以外なら、開く必要がない。
- 保存するファイルの存在確認。既に存在するなら、上書きしてはいけない。
今日は取り敢えず、基礎工事だけ。上記チェックは、後日取り組む。
ということで上記を踏まえ、作成したのがこちら。
Function ToNewExtension(source_path As String) As String Dim Wb As Workbook Set Wb = Workbooks.Open(source_path, False, True) If Wb.HasVBProject Then Wb.SaveAs , xlOpenXMLWorkbookMacroEnabled Else Wb.SaveAs , xlOpenXMLWorkbook End If ToNewExtension = Wb.FullName Wb.Close End Function
何かと必要になると思ったので、更新後のファイル名を返す関数にしてみた。
さて、ここからどう肉付けするか。
明日からまた、思案のしどころです。
参考まで。