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

エクセルVBAについて質問です。
Dドライブ内のXXフォルダ(D:\XX)内にある複数のテキストファイルの内容を全部一つにまとめるというマクロを作ってください。
例えば一つめのファイルには「ももんが」
二つめのファイルには「とんだ」
三つめのトファイルには「すごかった」
と記入されている3つのファイルの文書を
一つのファイルにまとめて、

ももんが
とんだ
すごかった

にしてください。
ただし
?マクロ実行後は既存のファイルを削除する。
?文字列をまとめたファイルを「★びっくり」というファイル名でXXフォルダ内に作成。
?例では「ももんが」等、文字が一行ですが複数行でも対応できるようにしてください。
?例のように「ももんが」、「とんだ」の文字列の後に改行を一つ入れてください。
?既存ファイル名の名前順に文字列を入れるようにしてください。
?新しく作られたファイルの文字コードはUTF-8にしてください。
なお、現在勉強中ですので、下記の質問の回答者4の方のような解説を付け加えてください。
http://q.hatena.ne.jp/1158311664

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

▽最新の回答へ

1 ● きゃづみぃ
●150ポイント

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

'対象フォルダ

Const strPath = "D:\XX"

'作成するファイル名

Const strMakeFileName = "★びっくり.txt"

Dim objFs As Object, objFld As Object, objFl As Object

Dim Stream As Object, buf As String

Set objFs = CreateObject("Scripting.FileSystemObject")

Set objFld = objFs.GetFolder(strPath)

Set Stream = CreateObject("ADODB.Stream")

buf = ""

'ファイルがある分ループする

For Each objFl In objFld.Files

'ファイルを開く

Stream.Open

Stream.Type = 2

'UTF-8形式で開く

Stream.Charset = "utf-8"

Stream.LoadFromFile objFl.Path

'読み込む

buf = buf & Stream.readText()

'最後に改行が 含まれているのかチェックする

If Right(buf, 2) <> Chr(13) & Chr(10) Then

'含まれていない場合は、改行付与

buf = buf & Chr(13) & Chr(10)

End If

'開いたファイルは 閉じる

Stream.Close

'削除する

Kill objFl.Path

Next

'ファイルを開く

Stream.Open

Stream.Type = 2

'UTF-8形式で開く

Stream.Charset = "utf-8"

'保存する

Stream.writeText (buf)

Stream.SaveToFile strPath & "\" & strMakeFileName, 2

'開いたファイルは 閉じる

Stream.Close

End Sub

http://q.hatena.ne.jp/1162274616

>?例のように「ももんが」、「とんだ」の文字列の後に改行を一つ入れてください。

最後が 改行の場合は、改行を入れないようにしました。

ももんが<改行> で 改行を入れると

ももんが<改行>

<改行>

となってしまいますから。

◎質問者からの返答

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

できました!いつも完璧ですね。

関連質問


●質問をもっと探す●



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