人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセル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

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:2006 2006年 24 28 9月15日
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●120ポイント

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

確認してみてください。

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]

◎質問者からの返答

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

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

本当に助かっています。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ