Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12181 / 13646 ツリー ←次へ | 前へ→

【11749】CSVをTXTに変える バルタン 04/3/15(月) 19:21 質問
【11763】Re:CSVをTXTに変える 谷 誠之 04/3/16(火) 0:57 回答
【11772】Re:CSVをTXTに変える バルタン 04/3/16(火) 10:28 質問
【11773】Re:CSVをTXTに変える こうちゃん 04/3/16(火) 11:02 回答
【11845】Re:CSVをTXTに変える バルタン 04/3/17(水) 13:37 質問
【11851】Re:CSVをTXTに変える こうちゃん 04/3/17(水) 15:30 回答
【11861】Re:CSVをTXTに変える バルタン 04/3/17(水) 17:44 お礼
【11875】おまけのDosShell Jaka 04/3/18(木) 9:56 発言
【11878】Re:CSVをTXTに変える こうちゃん 04/3/18(木) 10:02 発言
【11891】Re:CSVをTXTに変える Jaka 04/3/18(木) 13:33 回答
【11897】あぁ、そうですね こうちゃん 04/3/18(木) 14:20 発言
【11911】Re:CSVをTXTに変える バルタン 04/3/18(木) 16:05 お礼
【11917】Re:CSVをTXTに変える Jaka 04/3/18(木) 17:03 発言
【11918】失敗 Jaka 04/3/18(木) 17:08 発言

【11749】CSVをTXTに変える
質問  バルタン  - 04/3/15(月) 19:21 -

引用なし
パスワード
   いつもお世話になってます。
質問ですがあるエクセルファイルと同じフォルダにあるCSVのデータをすべて.txtに変換するVBAの方法はないでしょうか?

【11763】Re:CSVをTXTに変える
回答  谷 誠之 E-MAIL  - 04/3/16(火) 0:57 -

引用なし
パスワード
   バルタンさん、谷です。

>質問ですがあるエクセルファイルと同じフォルダにあるCSVのデータをすべ
>て.txtに変換するVBAの方法はないでしょうか?

ごめんなさい、これは質問の意図がわかりません。

.CSV も .TXT も、いわゆる「テキストファイル」という点で、同じです。
強いて言えば、.CSV は、データがカンマ区切りに決められているのに対し、
.TXT はフリーフォーマットで、特に規定はない、ということになります。

単に拡張子だけを変更したいのなら、

 1.DOSプロンプト(またはコマンドプロンプト)を開く
 2.ファイルが入っているフォルダを選択する
    CD というコマンドを使います。
    詳細は http://forum.nifty.com/fpcu/dosvcmd/chdir(cd).htm を参照してください。
 3.そこで次のコマンドを入力する。

      ren *.CSV *.TXT

これは、「すべての .CSV というファイルの拡張子を、.TXT に変更しなさい」という意味です。

これでは、ご期待に添えないでしょうか。

【11772】Re:CSVをTXTに変える
質問  バルタン  - 04/3/16(火) 10:28 -

引用なし
パスワード
   谷さんレスありがとうございますm(__)m
すいません説明が下手で(*_*)
CSVのデータで先方から来るのですが、CSVで変換すると文字化けをしてしまうのです。txtの拡張子だと上手く変換出来るので、VBAで変換する時にそのファイルと一緒のフォルダの中の.CSVの拡張子を.txtに変えたいと思ってお聞きしました。
>DOSプロンプト(またはコマンドプロンプト)を開く
VBAでは出来ないのでしょうか?
ファイルを開く度にこの処理をしたいので出来ればVBAの方がいいのですが・・・・
すいません教えて下さい。

【11773】Re:CSVをTXTに変える
回答  こうちゃん E-MAIL  - 04/3/16(火) 11:02 -

引用なし
パスワード
   バルタンさん、谷さん、こんにちは

>ファイルを開く度にこの処理をしたいので出来ればVBAの方がいいのですが・・・・
>すいません教えて下さい。

ファイルシステムオブジェクトを使ったサンプルです。
標準モジュールにコピペして、実行してみてください。

Sub test()
  Dim fs As Object
  Dim fld As Object
  Dim fl As Object
  
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set fld = fs.GetFolder(ActiveWorkbook.Path)
  
  For Each fl In fld.Files
    If fs.GetExtensionName(fl.Name) = "csv" Then
      If fs.FileExists(Replace(fl.Path, ".csv", ".txt")) Then
        MsgBox fl.Path & "のファイル名を変更しようとしましたが、" & _
        Replace(fl.Path, ".csv", ".txt") & "が存在します。"
      Else
        fl.Name = Replace(fl.Name, "csv", "txt")
      End If
    End If
  Next
  
  Set fld = Nothing
  Set fs = Nothing

End Sub

【11845】Re:CSVをTXTに変える
質問  バルタン  - 04/3/17(水) 13:37 -

引用なし
パスワード
   こうちゃんさんレスありがとうございます。
コードを貼り付けて、処理を行って見たのですが、すいませんが僕のエクセルでは起動しませんでした。ちなみに僕のはエクセル2002です。

【11851】Re:CSVをTXTに変える
回答  こうちゃん E-MAIL  - 04/3/17(水) 15:30 -

引用なし
パスワード
   ▼バルタン さん:
>こうちゃんさんレスありがとうございます。
>コードを貼り付けて、処理を行って見たのですが、すいませんが僕のエクセルでは起動しませんでした。ちなみに僕のはエクセル2002です。

起動しないとはどういう状態でしょうか?
OSは何をお使いですか?Win95とか?
当方では OS WinXP Win2000 で
Excel2000、2002、2003それぞれともに動作確認しております。
マクロは有効な状態になっていますよね?

まあ、とりあえず、別案で、Dir版です。
試してみて・・

Sub test2()
  Dim fld As String
  Dim fl As String
 
  fld = ActiveWorkbook.Path
  fl = Dir(fld & "\", vbNormal)
  
  Do While Len(fl) > 0
    If LCase(Right(fl, 4)) = ".csv" Then
      Name fld & "\" & fl As fld & "\" & Left(fl, Len(fl) - 4) & ".txt"
    End If
    fl = Dir()
  Loop

End Sub

【11861】Re:CSVをTXTに変える
お礼  バルタン  - 04/3/17(水) 17:44 -

引用なし
パスワード
   こうちゃんさん、こんばんわ。ありがとうございます無事解決しました(^_^)

>起動しないとはどういう状態でしょうか?
>OSは何をお使いですか?Win95とか?
>当方では OS WinXP Win2000 で
>Excel2000、2002、2003それぞれともに動作確認しております。
>マクロは有効な状態になっていますよね?
ちなみに僕のOSはWinMeを使用しております。
起動しないというかマクロは動いてるのですが、ファイルは変化してなくて、どうゆう処理をしたのかは僕もわからないのです(*_*)
だだファイルもフォルダにも変化はありませんでした。
マクロは有効になってます。
せっかく教えて頂いたのにすいませんm(__)m
もっと勉強していきたいのでこれからもよろしくご教授お願いしますm(__)m

【11875】おまけのDosShell
発言  Jaka  - 04/3/18(木) 9:56 -

引用なし
パスワード
   谷さんのをVBAでやらせただけです。
W98 & Exl97 or Exl2000 では、何とか動いてくれました。

Dim DfDr As String, ComL As String
DfDr = CurDir()
ChDir ThisWorkbook.Path
ComL = "COMMAND.COM /C ren *.csv *.txt"
Call Shell(ComL, vbHide)
ChDir DfDr
DoEvents

【11878】Re:CSVをTXTに変える
発言  こうちゃん E-MAIL  - 04/3/18(木) 10:02 -

引用なし
パスワード
   バルタンさん、みなさん、こんにちは

>起動しないというかマクロは動いてるのですが、ファイルは変化してなくて、どうゆう処理をしたのかは僕もわからないのです(*_*)
>だだファイルもフォルダにも変化はありませんでした。
>マクロは有効になってます。
>せっかく教えて頂いたのにすいませんm(__)m
>もっと勉強していきたいのでこれからもよろしくご教授お願いしますm(__)m

もっと勉強したいとのことですので、ステップ実行はご存知ですか?
VBE画面でF8キーを押下すると、ステップごとに実行されます。
分岐のどこを通っているかとか、変数の値はどうなっているのかを確認しながらステップ実行すると、「どう動いているのか」がわかってきますよ。
がんばってください(^^)

【11891】Re:CSVをTXTに変える
回答  Jaka  - 04/3/18(木) 13:33 -

引用なし
パスワード
   動かない原因。たぶん。

fld = ActiveWorkbook.Path

とか、

私の方の
ChDir ThisWorkbook.Path  '保存して無いファイルにパスなんてありません。

これだと思います。

ActiveWorkbook.Path
 か
ThisWorkbook.Path

の部分を

"C:\Windows\デスクトップ\何とかフォルダ"
と、CSVファイルの入っているフォルダパスにして下さい。

【11897】あぁ、そうですね
発言  こうちゃん E-MAIL  - 04/3/18(木) 14:20 -

引用なし
パスワード
   Jakaさん、ナイスフォロー!!

【11911】Re:CSVをTXTに変える
お礼  バルタン  - 04/3/18(木) 16:05 -

引用なし
パスワード
   Jakaさんこうちゃんさんありがとうございます(^_^)
なるほど指定する先がOSによって違うんですね。勉強になりました^^
Jakaさんのフォローがとても参考になりました。
これからもよろしくお願いします。m(__)m

【11917】Re:CSVをTXTに変える
発言  Jaka  - 04/3/18(木) 17:03 -

引用なし
パスワード
   >なるほど指定する先がOSによって違うんですね。

違います。OS(98系NT系)によってデスクトップの書き方は変わりますが、要はCSVファイルの入っているフォルダパスを指定すれば良いわけで、OSと言うよりどこに入っているかで変わるだけです。

【11918】失敗
発言  Jaka  - 04/3/18(木) 17:08 -

引用なし
パスワード
   細かい事ですが。

>OS(98系NT系)

9X系  Win95,98,Me?等

12181 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free