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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/31 15:03:38
  • 終了:2006/10/31 18:24:14

回答(1件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/10/31 16:17:39

ポイント150pt

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

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

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

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

ももんが<改行>

<改行>

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

id:taroemon

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

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

2006/10/31 18:23:19

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

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

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

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

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