• 締切済み

Excel2000でのVBAでの改行の置換方法

Excel2000でVBAを利用しています。 Dim buf As string buf = "あいうえお" buf = Replace(buf, Chr(10), Chr(13) & Chr(10)) Excel2007では上記のプログラムで「あいうえお」の間に入っている、 改行コード\nを\r\nに置換することができたのですが、 Excel2000では上記のコマンドで置換ができませんでした。 なんでも良いので、何か助言頂けると嬉しいです。 答えでもなくても良いのでなんでも思いついた事をお願い致します。

  • ptama
  • お礼率66% (4/6)

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

Replace(buf, Chr(10), Chr(13) & Chr(10)) は Replace(buf, vbLf, vbCrLf) の方がスマートなんですが・・・ >Excel2000では上記のコマンドで置換ができませんでした ところで、どのような結果になりましたか? 変化無し、or 予期しない結果・・・ 最悪、RegExpオブジェクトで変換すると、VBAのバージョンには 影響されずに処理可能です。

ptama
質問者

お礼

すみません。 データ自体がおかしかったみたいで、 データを作りなおしてるうちに動きました。 正確にどこのデータが原因だったのかまでは わかりませんでした・・。 申し訳ないです。

関連するQ&A

  • vba 改行 「・・」が置換できない

    シートの文字を取得して、削除したい文字を置換で消そうと思うのですが、 変数に格納した値にマウスカーソルを充てると、「・・」と表示され、置換できません。 ?mystr とすると、 改行が返ります。 mystr = Replace(mystr, Chr(10), "") mystr = Replace(mystr, Chr(13), "") mystr = Replace(mystr, vbCr, "") mystr = Replace(mystr, vbCrLf, "") mystr = Replace(mystr, Chr(10) & Chr(13), "") mystr = Replace(mystr, Chr(10) + Chr(13), "") で置換を試みましたが、全部だめです。 Debug.Print Asc(mystr) とすると、9が返ります。 この文字はどうやったら置換で消せるのでしょうか?

  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • EXCEL VBAにて、WORDへ置換

    EXCEL VBAにて、WORD文書への文字列置換を行っております。 文字列の置換自体はできています。 が、 置換文字列に「改行」(vbCRやvbLF)をいれて置換すると、 word側での表示が□になってしまいます。 vbCrだけでもvbLFだけでも、vbCRLFでも□と表示されてしまいました。 chr(13) & chr(10)でも□になりました。 EXCEL VBA にて WORDへ文字列置換する場合に送る、改行コード (たぶん「^p」と予測をつけているのですが)を chr関数等での 表示方法を教えてください。 EXCEL2003 WORD2003 よろしくお願いします。

  • 置換後に太く赤字にしたいです

    めぐみと申します。 以前に兄に以下のマクロを作ってもらいました。 エクセルにある文字を置換してくれるマクロです。 置換後の文字を太く赤字にしたいですがそのようにすればいいでしょうか? 恐れ入りますが知っている方がいらっしゃりましたら教えて頂けないでしょうか? よろしくお願いいたします。 Sub ワード置換() Dim wdObj As New Word.Application Dim buf As String buf = Dir(ActiveWorkbook.Path & "\*.doc") Do While buf <> "" wdObj.Documents.Open ActiveWorkbook.Path & "\" & buf n = 1 Do While ActiveSheet.Cells(n, 1) <> "" fdtxt = ActiveSheet.Cells(n, 1) rptxt = ActiveSheet.Cells(n, 2) With wdObj.Selection.Find .Text = fdtxt .Replacement.Text = rptxt .Forward = True .Wrap = wdFindContinue End With wdObj.Selection.Find.Execute Replace:=wdReplaceAll n = n + 1 Loop buf = Dir() Loop wdObj.Quit End Sub

  • Excel2007VBAプロシージャの引数について

    ●質問の主旨 下記コードのうち、 buf = buf & msg & vbCrLfについて 1.右辺の変数bufはどんな役割があるのでしょうか? 2.右辺のbufを省略したら、メッセージボックスに 表示される「Excel」の文字は3つから1つになります。 これはなぜでしょうか? ご存知の方ご教示よろしくお願いします。 ●コード Sub Sample8() Call Sample9("Excel", 3) End Sub Sub Sample9(msg As String, n As Long) Dim i As Long, buf As String For i = 1 To n buf = buf & msg & vbCrLf Next MsgBox buf End Sub

  • 置換のVBA

    エクセルVBAの置換のことです。 ("abc 2rme3xk5")  を  ("abc N")  のように置換させるにはどうすればいいでしょうか? Nは変数です。 ( )  や " も対象です。 以下のようにやってみましたがダメでした。 Rng.Value = Replace(Rng.Value,"abc*""","abc " & N & """")

  • WordVBA 置換処理での改行文字の可否

    (実際にはExcelのVBAからWordファイルを開いての処理になるのでExcelのVBAで組んでいますが、) WordのVBAで、置換処理を作成しています。 keyword1 = "検索文字" keyword2 = "置換文字" With objSelection.Find .Text = keyword1 .Forward = True .MatchWholeWord = True .Replacement.Text = keyword2 .Execute Replace:=wdReplaceAll End With 置換処理自体は出来ています。上記処理は置換部分の抜粋です。 しかし行いたいことはタイトルにもあります通り、置換文字中に改行を含めた状態での置換処理です。 長い文字列を置換するだけなら問題ないのですが、改行を含めてしまうと改行文字が別の文字に置き換えられてしまうようです。 置換先でも改行された状態にしたいのですが、これは書き方に問題があるのでしょうか? もしくは置換処理ではなく、他の方法を取る必要があるのでしょうか? 教えてください。よろしくお願いいたします。

  • VBA シート内ハイパーリンク置換がうまくいかない

    お世話になります。 今、エクセルシートのセルにあるハイパーリンクの置換をVBAで行おうとしています。 ファイルサーバの移設に伴い、ファイルサーバ内に保存されているエクセルファイル内のハイパーリンクの一部置換を実施すべく、下記のとおり作ってみましたがうまく置換してくれません。。 置換したいエクセルファイルはlist_TM.txtにフルパスでリスト化しており、ファイルを開く→ハイパーリンクがあれば置換→上書き保存して閉じる の繰り返しを実行しています。 下記を実行したあと、実際にファイルを開いて置換された結果を確認すると、\\server1\tantou\Datasave\sample.xls → C:\Datasave\sample.xlsとなってしまっており、当方が所望する\\server2\kyoyu\tantou\Share\Datasave\sample.xlsになっていませんでした。原因がよくわからず質問させて頂いた次第です。 なお途中でTargetRowとTargetColumnを挟んでいますが、この2行はハイパーリンクがある行と列をちゃんと拾ってくれているかどうか確認するために入れたので、無視してい頂いていいかと思います。 お力添えの程、宜しくお願い致します。 Sub Link_OKIKAE() Dim i As Long Dim buf As String Dim AWBN As String Dim HL As Hyperlink Open "C:\temp\test\list_TM.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf Workbooks.Open buf AWBN = ActiveWorkbook.Name For i = 1 To Worksheets.Count Sheets(i).Activate For Each HL In ActiveSheet.Hyperlinks TargetRow = HL.Range.Row TargetColumn = HL.Range.Column HL.Address = Replace(HL.Address, "\\server1\tantou", "\\server2\kyoyu\tantou\Share") Next HL Next i Workbooks(AWBN).Save Workbooks(AWBN).Close Loop Close #1 End Sub

  • VBAでテキストファイルに書き出し時の改行方法

    Excel VBAでテキストファイルに書き出しをしたいと思っています。テキスト内で改行を指定したいと思うのですが、どのようにやったらよいでしょうか? Dim str As String str = "ABC" & vbCrLf str = str & "DEF" & vbCrLf とやってもうまくいきません。何が悪いと考えられるでしょうか?

  • Excelの置換で改行

    Excelの置換で、 ある言葉のあとに改行を入れる方法を教えてください。 「AAA」という言葉を指定したら、AAAのあとに必ず改行(セル内での改行)を入れる方法です。 正規表現のようなもので改行が指定できたら、それでできると思うのですが、やり方がわかりません。 (そもそも置換で正規表現が使えるかどうかも知りません) Excel2000です。 (ただ、申し訳ないのですが、VBAなど難しいことはよくわかりません。)

専門家に質問してみよう