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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/31 15:10:59
  • 終了:2006/11/03 08:50:26

回答(3件)

id:taknt No.1

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

ポイント100pt

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

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

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

id:taroemon

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

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

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

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

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

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

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

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

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

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

2006/10/31 18:17:57
id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/10/31 16:34:26

ポイント100pt

改行コード(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]

id:taroemon

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

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

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

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

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

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

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

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

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

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

2006/10/31 18:18:23
id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982006/10/31 19:27:41

ポイント26pt

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

id:taroemon

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

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

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

「ももんが

とんだ

すごかった」

と表示されていますが、

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

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

2006/10/31 20:25:05
  • id:taknt
    通常では このような「ももんが↑とんだ↑すごかった」状態にはならないと思います。

    Chr(13) & Chr(10) のコードのうち どちらかしかない状態かもしれませんね。

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



    b = "ももんが" & Chr(10) & "とんだ" & Chr(10) & "すごかった"
  • id:taroemon
    わざわざコメントありがとうございます。
    何か設定の制かも知れませんね。
    こちらでもいろいろ確かめてみます。

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

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

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

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