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

エクセルVBAに関する質問です。

Dドライブ内の「XX」というフォルダの中に複数のテキストファイルがあるとします。その全てのファイルの中に記載されている「★★」をエクセルのセルK2に入っている文字列に置換するというマクロを作ってください。ただし文字コードはUTF-8でお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:K2 UTF-8 VBA エクセル セル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●100ポイント

XXフォルダにテキストファイルしか入っていなければ以下のマクロで問題ないと思います。

使いたいK2セルがあるシートを開いた状態でマクロを実行してください。

Option Explicit
Const strPath = "D:\XX"
Sub replaceAllStars()
 Dim objFs As Object, objFld As Object, objFl As Object, Stream As Object, Stream2 As Object, buf As String
 Set objFs = CreateObject("Scripting.FileSystemObject")
 Set objFld = objFs.GetFolder(strPath)
 For Each objFl In objFld.Files
 Set Stream = CreateObject("ADODB.Stream")
 Set Stream2 = CreateObject("ADODB.Stream")
 
 Stream.Open
 Stream.Type = 2
 Stream.Charset = "utf-8"
 Stream.LoadFromFile objFl.Path
 buf = Stream.readText()
 buf = Replace(buf, "★★", Range("K2").Value)
 Stream.SaveToFile objFl.Path + ".bkup", 2
 
 Stream2.Open
 Stream2.Type = 2
 Stream2.Charset = "utf-8"
 Stream2.WriteText (buf)
 Stream2.SaveToFile objFl.Path, 2
 
 Stream.Close
 Stream2.Close
 Next
End Sub

テキストファイルかどうかを判定する方法としてFileオブジェクトのTypeを(objFl.Type)を調べることも出来るのですが、拡張子から単純に判別するため、拡張子が.txtでないものは"テキスト文書"として扱われません。

そのため、今回はファイルタイプの判定処理は組み込んでおりません。

参考になれば幸いです。

[参考URL]

◎質問者からの返答

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

完璧にできました。

関連質問


●質問をもっと探す●



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