アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル97-2003 book の状態の資料(.xls)が6万程度あるのですが、それを全部現在のExcel(.xlsx)に変換したいのですが、その方法がわかりません。1つづつならできるのですが、あまりにたくさんなので何か月もかかりそうです。マクロ等で、早くできる方法はないでしょうか?
尚、古いほうのデーターを、ホルダーに入れておきたいのですが、これもたくさんあるのでマクロにしたいのですが、このホルダーを作るマクロがわかりません。もしご存知の方があればお教え願います。

A 回答 (6件)

2つに分けて作りました。

元ファイルの有るフォルダーに置いてください。
------------------------------------------------------------------------------------------
Sub 一覧表作成()
Dim ファイル名 As String
Dim 行番号 As Long
Cells.ClearContents
ファイル名 = Dir(ThisWorkbook.Path & "\*.xls")
Do While ファイル名 <> ""
If ThisWorkbook.Name <> ファイル名 Then
If StrConv(Right(ファイル名, 4), vbLowerCase) = ".xls" Then
行番号 = 行番号 + 1
Cells(行番号, 1) = ファイル名
End If
End If
ファイル名 = Dir()
Loop
End Sub
------------------------------------------------------------------------------------------
上記でアクティブシートに一覧表を作ります。
不要なファイルが有ったら行削除してください。
------------------------------------------------------------------------------------------
Sub 変換保存()
Const コピー先パス名 As String = "C:\○○\"
Dim コピー元パス名 As String
Dim 最終行 As Long
Dim 行 As Long
Dim ファイル名 As String
コピー元パス名 = ThisWorkbook.Path & "\"
最終行 = Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
For 行 = 1 To 最終行
If StrConv(Right(Cells(行, 1).Value, 4), vbLowerCase) = ".xls" Then
ファイル名 = Left(Cells(行, 1).Value, Len(Cells(行, 1).Value) - 4)
Workbooks.Open Filename:=コピー元パス名 & ファイル名 & ".xls"
If Dir(コピー先パス名 & ファイル名 & ".xlsx") <> "" Then Kill (コピー先パス名 & ファイル名 & ".xlsx")
ActiveWorkbook.SaveAs Filename:=コピー先パス名 & ファイル名 & ".xlsx", FileFormat:=51
ActiveWindow.Close
End If
Next
Application.DisplayAlerts = True
End Sub
------------------------------------------------------------------------------------------
上記でファイルコピー&変換を行います。
事前にコピー先フォルダーを作成しておいてください。
「"C:\○○\"」はコピー先のフルパス名に直して下さい。最後の「\」を忘れずに!
マクロが有ったファイルは保存時に無条件で削除されます。
保存先に同じ名前が有った場合は無条件で上書きされます。
    • good
    • 0
この回答へのお礼

誠にありがとうございました。
無事完全に変換ができました。

私の変換では , FileFormat:=51 の部分が抜けていました。

本当にありがとうございました。
これで作業か完全にスピードアップされます。

お礼日時:2017/06/02 16:46

No.4 の追補(誤解防止)



「マクロが有ったファイルは保存時に無条件で削除されます。」は「マクロが有ったファイルは保存時に無条件でマクロが削除され保存されます。」です。元ファイルのマクロはそのまま残ります。
    • good
    • 0

No.4 の追補



元ファイルは開くだけなので削除されることはありません。
元ファイルは1つのホルダーに置いておいてください。
(ホルダーごとに実行すれば実行出来ますが、同じ名前のファイルがあると先に変換したものが削除されますので注意が必要です)
    • good
    • 0
この回答へのお礼

ありがとうございました。

どちらも同じ名前でしましたが削除はしませんでした。

ありがとうございました。

お礼日時:2017/06/02 16:47

いきなりマクロ提供よりも、少し打診をしたいところがあります。


いくら変換しても、元のデータそのものは残しておいて良いかと思います。

6万ファイルにはいろんなものが出てくるでしょうから、変換しながら、リスト表を作っておくとよいと思います。

作ったリスト表は、ハイパーリンクを入れたら、とんでもなく重くなってしまいますが、ダブルクリック・マクロでそのファイルが開けられるようにすると良いと思います。
その時、元のファイルの更新日や日付を残せたら良いと思いますが、結構、これが難問だったりすることがあります。

新しいxmlファイル形式は、ZIP圧縮なので、省スペースにはなります。
一つのフォルダーに6万も入れても、管理状態が良くないと思いますから、何らかの分類・分配方法が必要かと思います。

なお、ご質問者さんは、他人が作ったマクロの修正はある程度可能ですか?

また、私の心配ごとは、6万件のファイルを出し入れした時のメモリ状態です。
パソコンが健康な状態なら良いのですが、昨今、Windows10にしてから、どことなく不明なパソコンの故障が増えているような気もします。マクロが最後まで持つか分からないのです。それに、それでも相当の時間が掛かります。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご返事が遅れ申し訳ありません。
元データーは、一応ほかに残しているので、最悪失敗しても何とかなるとは思っていますが、残すのに越したことはないので、できればそのフォルダーの中に【旧資料】のフォルダーを作り、残したいとは思っています。
ご指摘の、リスト表までは考えていませんでしたが、フォルダーでかなり分けていますので、不要かと思っています。
「変換しながら、・・・」と書かれていますが、この変換が、自動でできれば・・・と、いろいろ模索しています。
6万のデーターを一回一回開いて、新バージョンで名前を付けるのは時間がかかりすぎ、2か月ほどかかりそうです。これをマクロで行う式がわかりません。ご存知でしたらお教えください。なお、フォルダーを作るマクロもわかりません。ワークブックやシートを追加することまではできますが、その上のフォルダーについては、本を読んでもどこにも出てきません。
簡単に出来そうなのですが、ご存知でしたらお教えください。
よろしくお願いいたします。
また、マクロは自己流なので、他の人が作ったものが理解できるかは不明です。もし、マクロ内容が記載されましたら、自分でもやってみます。
尚、データーはすべて外付けハードディスクに入れていますので、メモリーは大丈夫かと思います。

お礼日時:2017/06/02 12:27

ちなみに、元ファイルはマクロが存在したりしなかったりするのでしょうか?


マクロが存在しなければ、開いて、名前を付けて保存の繰り返しをするだけですが、マクロがあるとセキュリティの問題などうまくいかない可能性もあります。いかがでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに、マクロの入ったものは一部存在しますが、不要なマクロなので、消しながら作業しています。
互換の場合も【マクロを残すかどうかの】コメントが出て、この場合は仕方ないかと思っています。
ご回答の「開いて、名前を付けて保存」の作業を手作業でなく自動でしたいのですが、有効な方法はないでしょうか?

お礼日時:2017/06/02 12:11

別に変換しておく必要が無いと思います。


新しいバージョンでは問題なく開けますから…
使用容量が増えるだけ無駄だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。実はこの大量の資料の内容を変更をしたいのですが、変更したあと保存すると、いちいち互換バージョンで保管することを確認に来ます。そのとき、必ず「はい」を押さないと、次へ進めません。6万のデーターにいちいち「はい」押すと、その間何もできないので、困っています。新バージョンではその必要がないので、【データー呼出し】⇒【変更】⇒【保存】⇒【閉じる】⇒【次のデーター呼出し】と進んで、この確認作業がなく何時間でも勝手にやってくれるのでありがたいのです。自動でデーター呼出しはできますので、この変換作業さえ済めば今後の作業に非常に有効になります。よろしくお願いいたします。

お礼日時:2017/06/02 08:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!