先日部長から「このメールに添付しているファイルを古い形式にしてAさんに送付しておいて」
と指示を受けた。どうやら先方からダウングレードして送付してほしいと依頼があったらしい。
仕方ないなぁと思いながら取り掛かろうと思ったらファイルが7つも添付されていやがる。
めんどくさい。
手作業で1つ1つ変換して送付しようと思ったら、Aさんて社内の人間かよ!
なんで社内で2003と2007以降が同居してんだよ!
これはまた同じ指示が飛んできそうな気がする。
なんとか対策をしておかねば。
フォルダ内を一括変換
ということで早速以下のコードを作成
Sub From2007To2003() Dim FolderPath As String Dim myFSO As FileSystemObject With Application.FileDialog(msoFileDialogFolderPicker) .Show Set myFSO = New FileSystemObject Dim myFile As File Dim myBook As Workbook For Each myFile In myFSO.GetFolder(.SelectedItems(1)).Files Set myBook = Workbooks.Open(myFile.Path) Dim i As Long i = InStrRev(myFile.Path, ".") myBook.SaveAs Left(myFile.Path, i) & "xls", xlExcel8 myBook.Close Next Set myFSO = Nothing End With End Sub
指定したフォルダ内の2007形式のExcelファイルを順繰りに開いて2003形式に変更して保存する。
自分一人が使うものなのでエラートラップは全く仕込んでいない。
こういうときにエラーは出るだろう
・フォルダ選択時
・指定フォルダ内に2007形式のExcelファイル以外が保存されている。
・あるいは指定フォルダ内に何もファイルが無い。
・2007以降に搭載された機能を使用している
まとめ
これで100個のファイルを変換してくれと言われてもお安いご用。
(そもそも社内のOfficeのバージョンが統一されていれば、このような手間が発生しないのだけど。
ライセンス料をケチっているのだろうか。