• ベストアンサー

Excel マクロを使った保存について

マクロを使って同一のフォルダーの中にある複数のテキストファイルを同じ名前のブックとして,テキストのあるフォルダーに保存したいのですが,拡張子の変更がうまく行きません。是非知恵を貸してください。よろしくお願いします。 ちなみにフォルダーも複数あるので,それぞれにも対応できるようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.4

こんばんわ。サンプルマクロを作ってみました。参考にしてみて下さい。 Sub Macro2() Dim myTxt As String myTxt = Dir("C:\My Documents\*.txt") Do Until myTxt = "" Workbooks.OpenText Filename:="C:\My Documents\" & myTxt Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:\My Documents\" & myTxt & ".xls" myTxt = Dir Application.DisplayAlerts = True Loop End Sub ご不明な点・不具合等がございましたらご遠慮なく補足要求して下さい。

kamomenotamago
質問者

お礼

このマクロを参考にいろいろ試してみました。 うまく行きそうです。ありがとうございました。 また、御礼が遅くなり申し訳ございません。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • 326
  • ベストアンサー率5% (1/18)
回答No.3

一度テキストファイルを開いて「名前をつけて保存」で形式をxlsに変更して保存してはどうでしょうか? txtname = Dir("C:\My Documents\*.txt") '最初のテキストファイルの名前を取得 Do Until txtname = "" 'テキストファイルが無くなったら終了   Workbooks.Open FileName:="C:\My Documents\" & txtname 'テキストファイルを開く   xlsname = Left(txtname, Len(txtname) - 4) & ".xls" 'ファイル名の拡張子を.xlsに変更   '形式を変換して保存   ActiveWorkbook.SaveAs FileName:="C:\My Documents\" & xlsname, FileFormat:= _    xlExcel9795, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _    False, CreateBackup:=False   ActiveWorkbook.Close 'ファイルを閉じる   txtname = Dir '次のテキストファイルの名前を取得 Loop Dir()を使うと、指定したフォルダに入っている特定のファイルの名前を取得できますので、txtファイル開く→xlsで保存→txtファイル開く→xlsで保存・・・を繰り返せばいいと思うのですが。 上のマクロではフォルダを「C:\My Documents」にしていますが、ここを書き変えれば他のフォルダでもいけると思います。 あんまり綺麗なプログラムではないので、もうちょっといじれば応用が効くかも。 勘違いしてたら、ゴメンナサイm(__)m

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

(質問内の表現についての疑問) 私の理解の至らないせいだとすればお許しください。詫びします。 (1)「同一のフォルダーの中にある複数のテキストファイルを」 多分エクセルのワークシートごとにCSVファイルで保存してある(したい)のだと思います。例えばSheet1,Sheet2の両方にデータを入れて、CSV形式ファイル に保存しようとするとエラーになります。したがってブック名=フォルダ名 として、シート名=ファイル名にして保存しているのでしょうね。そうせざるを得ないのではないですか。 (2)「同じ名前のブックとして,テキストのあるフォルダーに保存したいのですが」 同じ名前のブックのブック名は通常はファイル名のレベルになります。 しかし(1)で言った理由から、ブック名=フォルダ名にせざるを得ません。同じフォルダ名を2つ作れないのでどうしたいのですか。 (3)「テキストのあるフォルダに」 この意味が良く判らない。 (4)「保存したいのですが」テキスト形式で保存したいということですよね。 ActiveWorkbook.SaveAs ブック名 を使うのでしょうが。 (4)「拡張子の変更がうまく行きません」 拡張子を変更するなどは問題にんるはずがないと思います。拡張子を変えたら、ファイル形式が変ると思っていないでしょうね。意図はファイル形式の変更とでもいいますか。ただファイル形式の変更は出来ず、新しく、別の 望みのファイル形式で、ファイルを作成することになるはずです。 --参考となりそうなコーディング例---- (フォルダの作成) Sub test01() MkDir "c:\My Documents\test1" MkDir "c:\My Documents\test2" End Sub でMy Documentsフォルダの中にtest1,test2というフォルダだ作成される。 (テキスト・ファイルの作成) メモ帳(またはエクセルのファイルをテキスト形式で保存)を開き何でも 内容を打ちこみ、名前をつけて保存をする。保存する場所を、test1フォルダを指定する。exlbook1.txt 同じくあと2回同様のことを行う。exlbook2.txt,exlbook3.txtの3つが 出来た。 (VBAでファイルコピー) Sub test02() t1 = "c:\My Documents\test1" t2 = "c:\My Documents\test2" s = Dir("c:\My Documents\test1\*.txt") MsgBox s t3 = t1 & "\" & s t4 = t2 & "\" & s MsgBox t3 MsgBox t4 FileCopy t3, t4 For i = 1 To 5 s = Dir() If s = "" Then Exit For MsgBox s t3 = t1 & "\" & s t4 = t2 & "\" & s MsgBox t3 MsgBox t4 FileCopy t3, t4 Next i End Sub 途中確認のために、しつこくMsgboxを入れていますが、納得すれば 外してください。 Dir()は()内に1回目だけパス名を入れ、2回目は何も入れない ので、スッキリしていませんがよろしく。forループの5 は適当にフォルダ内のファイル数により増やしてください 。

すると、全ての回答が全文表示されます。
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.1

初めまして。貴方様のおやりになりたいことがうまく理解できません。私の手元でも貴方様と同じ動作ができるように教えていただけないでしょうか。 サンプルマクロをご提供できるかと思います。 お手数をおかけいたしますが、よろしくお願いいたします。

kamomenotamago
質問者

補足

返事遅くなりました。 私のやりたいことを補足します。 例を挙げると C:\My Documents Cに test1.txt test2.txt と言うファイルがあります。 これをエクセルで開いて「名前を付けて保存」でファイルの種類だけを変えて 保存を行いたいです。 作業後は C:\My Documents Cに test1.txt test2.txt の他に test1.xls test2.xls と言う2つの新しいファイルが有る事になります。 現在はテキストファイルをエクセルで開き,「名前を付けて保存」でファイルを作成している状態です。

すると、全ての回答が全文表示されます。

関連するQ&A