エクセルVBAについて質問です。


Dドライブ内の「XX」というフォルダの中に、
複数のテキストファイルがあるとします。
その全てのファイルの中に記載されている「★★」を
作業した日時に置換するマクロを作ってください。
ただし作業した日時が2006年9月15日の午後4時28時だった場合、
「09/15/2006 04:28:24 PM」という形で表示するようにして、
文字コードはUTF-8でお願いします。

以前似た質問をしているので、
下記のページにあるマクロが参考になります。
ただしバックアップファイルは作らないようにしてください。
http://q.hatena.ne.jp/1162149866
http://q.hatena.ne.jp/1162146173

なお、現在勉強中ですので、下記の質問の回答者4の方のような解説を付け加えていただいた方には追加ポイントのおまけを付けます。もしそれが必要なければマクロだけでも結構です。よろしくお願いします。
http://q.hatena.ne.jp/1158311664

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/30 22:47:50
  • 終了:2006/10/30 23:36:43

回答(1件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/10/30 23:20:55

ポイント120pt

バックアップファイルを作らないようにしました。

確認してみてください。

Option Explicit
Const strPath = "D:\XX"
Sub replaceStarsToDate()
    
    ' 変数の宣言
    Dim objFs As Object, objFld As Object, objFl As Object, Stream As Object, buf As String
    
    ' FileSystemObjectの生成
    Set objFs = CreateObject("Scripting.FileSystemObject")
    ' FileSystemObjectに対してGetFolderを実行
    ' strPathに設定されたパスのフォルダオブジェクトの取得
    Set objFld = objFs.GetFolder(strPath)
    
    ' ADODB.Stremオブジェクトの生成
    Set Stream = CreateObject("ADODB.Stream")
    
    ' フォルダオブジェクトに対してFilesメソッドを実行し、ファイルを取得
    ' ファイル1つずつについて処理
    For Each objFl In objFld.Files
        
        ' ADODB.Streamを開く
        Stream.Open
        ' Streamをテキストモードで扱う
        Stream.Type = 2
        ' 文字コードは"utf-8"
        Stream.Charset = "utf-8"
        ' Streamにファイルをロードする (ファイルのフルパスを指定)
        Stream.LoadFromFile objFl.Path
        ' bufにStreamとして開いたファイルの内容を読み込み、格納
        buf = Stream.readText()
        ' bufの内容をReplaceで置換
        buf = Replace(buf, "★★", Format(Now, "dd/mm/yyyy hh:mm:ss AM/PM"))
        ' Streamを一度閉じる
        Stream.Close

        ' Stremを開きなおす
        Stream.Open
        ' Streamをテキストモードで扱う
        Stream.Type = 2
        ' 文字コードは"utf-8"
        Stream.Charset = "utf-8"
        ' bufの内容をStreamに書き込む
        Stream.WriteText (buf)
        ' 元ファイルの名前(フルパス)で書き込む
        Stream.SaveToFile objFl.Path, 2
        ' Streamを閉じる
        Stream.Close
                       
    ' 次のファイルに移動
    Next
End Sub

参考になれば幸いです。

[参考URL]

id:taroemon

ご回答ありがとうございます。

いつも素早くて、正確な回答ですね。

本当に助かっています。

2006/10/30 23:35:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません