Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4426 / 9994 ←次へ | 前へ→

【8814】Re:改行を削除する方法
回答  小僧  - 06/11/21(火) 10:20 -

引用なし
パスワード
   ▼ゆずぽん さん:
おはようございます。

>改行を消す方法はあるのでしょうか?

まず改行についてですが、
VBA内では「vbCrLf」という定数を使うことが可能です。

またクエリ内で処理したい場合はCr(キャリッジリターン)とLf(ラインフィード)
をキャラクターコードで連結させます。Chr(13) & Chr(10)


> 空白の行が残ってしまいます。

ご提示のようなデータですと、

+++ CrLf ??? CrLf *** CrLF

というデータが

+++ CrLf CrLf *** CrLF

となるわけですよね。

空白行についてはCrLfが連続で出現するので、
こちらを1つにしてあげれば良さそうです。

Replace(Replace([Data],"???",""),
Chr(13) & Chr(10) & Chr(13) & Chr(10),Chr(13) & Chr(10));


ただしこれでは先頭に???があった場合は処理できません。

力技になってしまいますが、
まず初めに Left([AAA],3) が ??? であった場合はMid([AAA],6) に変換し、
その後上記の処理を行うとうまくいくと思われます。


Function exReplace(varData As Variant, strFind As String) As Variant

  If Not IsNull(varData) And Len(varData) > Len(strFind) Then
    If Left(varData, Len(strFind)) = strFind Then
      varData = Mid(varData, Len(strFind & vbCrLf) + 1)
    End If
    
    varData = Replace(varData, strFind, "")
    varData = Replace(varData, vbCrLf & vbCrLf, vbCrLf)
  End If
  
  exReplace = varData
End Function

とモジュールに記述して

UPDATE テーブル名 SET AAA = exReplace([AAA],"???");

こんな感じでしょうか。
1,746 hits

【8812】改行を削除する方法 ゆずぽん 06/11/21(火) 9:00 質問
【8813】Re:改行を削除する方法 飛ばない豚 06/11/21(火) 10:15 回答
【8814】Re:改行を削除する方法 小僧 06/11/21(火) 10:20 回答
【8815】Re:改行を削除する方法 ゆずぽん 06/11/21(火) 12:25 お礼

4426 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078218
(SS)C-BOARD v3.8 is Free