• ベストアンサー

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/17068)
回答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

  • 「dbf」「csv」などをマクロで「xls」に一括変換する方法

     お世話になっております。 タイトルの通りの質問なのですが、拡張子「dbf」「csv」などのエクセルで開けるファイルをマクロで「xls」に一括変換する方法が分からなかったので質問させていただきました。 まずやり方としてなのですが、 1:「dbf」もしくは「csv」ファイルをフォルダから選び開く。 2:何も変更せずにファイル→名前を付けて保存ボタン 3:ファイル名を変更せずに保存拡張子を「Microsoft Office Excel ブック(*.xls)」に変更し保存。 4:Excelブックを変更や保存せずに閉じる。 これだけの事なのですが、流石に200個ほどあるのでマクロで出来ないものかと思いまして質問させていただきました。 ・マクロを実行するとフォルダ選択にいき、新しく「xls」に変更したいファイルを選択し、実行すると「xls」が出来ている。と言うのが理想なのですが、そのような事は可能なのでしょうか? ・1つのフォルダに様々な箇所から集めた「dbf」や「csv」をまとめてありますので、どのファイルを選択するかの時に複数個選択出来ると非常に助かります。 ・「dbf」と「csv」両方対応していなくてもどちらかだけでも、構いません。 よろしくお願いします。

  • マクロの保存

    エクセルのマクロについて教えてください。エクセル2010でセルをダブルクリックすると、同一フォルダ内のPDFファイルデータを表示するというマクロを作ったのですが、保存する際に「次の機能はマクロ無しのブックに保存できません・VBプロジェクト~」と表示されExcelマクロ有効ブック(拡張しxlsm)に替えて保存するとマクロのコード自体は残っているのですが、Not find fileと出てしまいます。また最初からExcelマクロ有効ブックでコードを入力しても同様の結果になります。このような場合どのように保存すればいいのでしょうか?

  • エクセルでファイルをcsv形式で保存するマクロについて

    同様の質問が以前にあったのですが、 どうやら私のは少し違うようなので新規質問として投稿させていただきます。 エクセルファイルを保存する際、保存形式を「テキスト(タブ区切り)(*.txt)」にして、 ファイル名の拡張子の部分だけ(.csv)にして保存するマクロを作成したいです。 しかし、エクセルに付いているオートマクロ機能で記録しようとすると、 ・ファイル名がオートマクロを作成した際に付けたファイル名になってしまう。 ・保存場所がオートマクロを作成した際に保存したフォルダになってしまう。 という問題が発生します。 なので、 ・保存する際のファイル名は現在作業しているファイルの名前をそのまま使用する。 ・保存する際のファイル名の拡張子部分は(.csv)に変更する ・保存場所は現在作業しているファイルがあるフォルダにする(もしくはプログラムで予めパスを指定できる)。 ・保存形式は「テキスト(タブ区切り)(.txt)」 の4つの条件を満たすマクロの作成方法をお教えいただけますでしょうか? すみませんが、よろしくおねがいします

  • エクセル マクロを保存させる場所について

    最近マクロの基本中の基本を勉強し始めた者です。 あるフォルダの中にある100個近くあるエクセルのファイルすべてに同じような作業をしたいので 100個あるファイルの内の1個を使ってマクロを組みました。 その際、マクロの保存先は「PERSONAL.XLS」を選びました。 残りの99個のファイルは、組んだマクロを使って簡単に作業を終わらせることができたのですが それ以来、全く無関係なエクセルを起動させても 「PERSONAL.XLS」というシートが立ち上がってきてしまうようになってしまいました。 保存先を「PERSONAL.XLS」にしたのがやはり原因なのでしょうか? もしそうなら、保存先は「開いているすべてのブック」「作業中のブック」どちらに変更すればよいでしょうか? 長文で失礼いたしました。

  • エクセルでファイル保存が出来ない…

    始めまして。 エクセル2000で作成したファイルを エクセル2002で開きました。 そのまま上書き保存をしたいのですが 数人と共有する為、保存形式を下記のようにしたいと 思っています。 Microsoft Excel 97-2002および5.0/95ブック(*.xls) ところが、2002で開いていると保存の際に 「ファイルが保存できません」と出てしまいます。 名前を変えてみてもダメで、 保存形式を Microsoft Excelブック(*.xls) にしてみてもダメでした。 元々作成した時のPCがエクセル2000だったので 新しい機能があるため保存出来ない…とかでは なさそうなのですが…。 ちなみにファイルの中には 複数のマクロが組まれています。 (データをクリアして新しく計算式を貼り付ける等) マクロを組む事で何か原因があるのでしょうか。 皆様の知恵をお貸し下さい。宜しくお願いします。

  • エクセル2007のマクロのブックについて

    エクセル2007を現在使用しております。 その中のファイルで、97-2003の保存形式(xls)で使用していたマクロのブックがあります。 そのブックを保存形式はそのままで、名前だけを変更し登録しました。 すると、セキュリティの警告で、マクロが無効にされましたと表示され、 現在その都度有効に設定している状態です。 ブックの名前を変更するとマクロは無効になるのでしょうか? 原因を教えて下さい。 また、このブックだけを常に有効にする設定もあれば、 その方法もご教授下さい、お願いいたします。

  • エクセルマクロの保存

    エクセルのマクロについて教えてください。エクセル2010でセルをダブルクリックすると、同一フォルダ内のPDFファイルデータを表示するというマクロを作ってもらったのですが、保存する際に「次の機能はマクロ無しのブックに保存できません・VBプロジェクト~」と表示されExcelマクロ有効ブック(拡張しxlsm)に替えて保存するとマクロのコード自体は残っているのですが、Not find fileと出てしまいます。また最初からExcelマクロ有効ブックでコードを入力しても同様の結果になります。このような場合どのように保存すればいいのでしょうか? ちなみにコードは下記のようになります。 'Option Explicit 'Private Const pdfPATH As String = "D:\5678\" Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  Cancel = True  If Not Target.Value Like "*.pdf" Then Exit Sub  If Dir(pdfPATH & Target.Value) = "" Then MsgBox "File Not Found": Exit Sub  With CreateObject("Wscript.Shell")   .Run "" & pdfPATH & Target.Value & "", 3  End With End Sub

  • エクセルのマクロの保存が出来ません。

    70歳の手習いでVBA関数の勉強を始めましたが、マクロの保存がどうしても出来ません。 「マクロの記録」→「一連の操作」→「記録終了」で作成、その後「Ctri+ショットキー」で動作はするので、喜んでファイルを閉じようとすると「次の機能はマクロなしのブックには保存できません」と注意され、そこから注意の内容通りするのですが、どうしても巧く行きません。仕方なく何とかファイルを閉じて、再立ち上げしたらマクロが消えているのです。 一応、ファイルはマクロ有効ファイルになっており、拡張子も.Xlsmで、アイコンに「ビックリマーク」もついています。宜しくお願い致します。

  • Excelマクロで複数のファイルを開く方法

    Excel VBAでそのマクロを実行するファイルと同じフォルダにある 複数のテキストファイルを全て開いて、ある処理を実行して それを名前を変えた別のテキストファイル(元のテキストファイル名に 何らかの名前を追加する形が望ましいです。)として保存する マクロを作成したいのですが、可能でしょうか。 当方、初心者につき申し訳ございませんがよろしくお願い致します。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

専門家に質問してみよう