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

エクセルVBAについて質問です。
テキストファイルの特定の文字列を置換するというマクロを作成する場合、置換後の言葉にノートパッドの改行マーク↑を挿入するにはどうしたらよいのでしょうか?
たとえば★★という言葉を「ももんが↑とんだ↑すごかった」にするにはどのようなマクロを組んだらよいかおしえてください。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:VBA エクセル テキスト ノート ファイル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

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

改行マークというのは、改行 ということですよね?

改行を 文字列で あらわすときは

Chr(13) & Chr(10)

とします。

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

ならば

"ももんが" & Chr(13) & Chr(10) & "とんだ" & Chr(13) & Chr(10) & "すごかった"

という文字列で 置換すればいいです。

Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

'対象フォルダ

Const strPath = "D:\XX"

'置換するファイル名

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

Dim Stream As Object, buf As String

Set Stream = CreateObject("ADODB.Stream")


'置換対象する文字列

a = "なに"

'置換文字列

b = "ももんが" & Chr(13) & Chr(10) & "とんだ" & Chr(13) & Chr(10) & "すごかった"

'ファイルを開く

Stream.Open

Stream.Type = 2

'UTF-8形式で開く

Stream.Charset = "utf-8"

Stream.LoadFromFile strPath & "\" & strMakeFileName

'読み込む

buf = Stream.readText()

buf = Replace(buf, a, b)

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

Stream.Close


'ファイルを開く

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/1162275057

◎質問者からの返答

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

下記のページにあるマクロで、

これを使うにはどうしたらよいでしょうか?

日時の欄に"ももんが" & Chr(13) & Chr(10) & "とんだ" & Chr(13) & Chr(10) & "すごかった"を

入れてみたのですがうまくいきません。

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

元来なら自分でいろいろ試してみるところですが、

時間が無くてその余裕がありません。

当該のページにあるマクロを改変して、

「ももんが↑とんだ↑すごかった」に置換できる用にしてください。


2 ●
●100ポイント

改行コード(LF)を設定することで、notepad.exeでは↑のように表示される改行を挿入することができます。

簡単な方法はvbLfを使う方法です。

下記の例では、A1セルに改行コード(LF)を含んだ値をセットし、B1セルに改行復帰コード(CRLF)を含んだ値をセットします。

Option Explicit
Sub Macro1()
 
 Dim originalStr As String, replaceStr As String, resultStr As String, replaceStr2 As String
 
 ' オリジナルの文字列の設定
 originalStr = "テスト★★テスト"
 ' 復帰コード(LF)を含む置換用文字列の設定
 replaceStr = "ももんが" & vbLf & "とんだ" & vbLf & "すごかった"
 
 ' オリジナル文字列の表示
 MsgBox (originalStr)
 ' 置換用文字列の表示
 MsgBox (replaceStr)
 ' 文字列の置換(vbLfを含む文字列での置換)
 resultStr = Replace(originalStr, "★★", replaceStr)
 ' 置換結果の表示
 MsgBox (resultStr)
 ' A1セルにvbLfを含む置換結果をセット
 Range("A1").Value = resultStr
 
 
 ' 改行復帰コード(CRLF)を含む置換用文字列の設定
 replaceStr2 = "ももんが" & vbCrLf & "とんだ" & vbCrLf & "すごかった"
 
 ' オリジナル文字列の表示
 MsgBox (originalStr)
 ' 置換用文字列の表示
 MsgBox (replaceStr)
 ' 文字列の置換(vbCrLfを含む文字列での置換)
 resultStr = Replace(originalStr, "★★", replaceStr2)
 ' 置換結果の表示
 MsgBox (resultStr)
 ' B1セルにvbCrLfを含む置換結果をセット
 Range("B1").Value = resultStr

End Sub

A1セル、B1セルの値をそれぞれコピーしてメモ帳に貼り付ければ、結果の違いが分かると思います。

改行コード関係はややこしいので、ご注意ください。

[参考URL]

◎質問者からの返答

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

下記のページにあるマクロで、

これを使うにはどうしたらよいでしょうか?

日時の欄に"ももんが" & vbLf & "とんだ" & vbLf & "すごかった"を

入れてみたのですがうまくいきません。

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

元来なら自分でいろいろ試してみるところですが、

時間が無くてその余裕がありません。

当該のページにあるマクロを改変して、

「ももんが↑とんだ↑すごかった」に置換できる用にしてください。


3 ● きゃづみぃ
●26ポイント

Option Explicit

の記述がありますので、変数の宣言をしないとダメです。

Dim a as string

Dim b as string

'置換対象する文字列

a = "なに"

'置換文字列

b = "ももんが" & Chr(13) & Chr(10) & "とんだ" & Chr(13) & Chr(10) & "すごかった"

と最初のほうに入れます。

' bufの内容をReplaceで置換

buf = Replace(buf, "★★", Format(Now, "dd/mm/yyyy hh:mm:ss AM/PM"))

buf = Replace(buf, a, b)

に すればいいです。



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

◎質問者からの返答

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

置換できました。時間に追われているので助かります。

追加で質問なんですが、置換後の文字が

「ももんが

とんだ

すごかった」

と表示されていますが、

これを「ももんが↑とんだ↑すごかった」とするには

どうしたらよいのでしょうか?

関連質問


●質問をもっと探す●



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