Excel VBA質問箱 IV

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

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


66797 / 76738 ←次へ | 前へ→

【14500】Re:セル内の改行コードを消したい
回答  Hirofumi  - 04/5/30(日) 21:00 -

引用なし
パスワード
   【14261】で

>  ダブルクォーツ無しで出力する事は、こんなコードで出来るけど
>データの中に、ダブルクォーツや、改行、カンマが有ると、
>読み込む時に、元の様に成らないよ?

といったのは、ダブルクォーツで括って有れば
Access等では、データの中に、ダブルクォーツや、
改行、カンマが有っても1フィールドとして読んでくれるので
ダブルクォーツで括ら無いのは?
と言う意味でした

もし、【14261】のコードでCsv出力するなら、以下の様な変更で
改行を削除できると思います

改修するプロシージャが1つ
追加するプロシージャが1つです

以下の様に「Function ComposeLine」プロシージャを変更して下さい


Private Function ComposeLine(vntField As Variant, _
            Optional strDelim As String = ",") As String
'  レコード作成

  Dim i As Long
  Dim strResult As String
  Dim strField As String
  Dim lngFieldEnd As Long
  Dim vntFieldTmp As Variant
  
  'もし、データが複数なら
  If VarType(vntField) = vbArray + vbVariant Then
    vntFieldTmp = vntField
  Else
    ReDim vntFieldTmp(1 To 1, 1 To 1)
    vntFieldTmp(1, 1) = vntField
  End If
  'データ数の取得
  lngFieldEnd = UBound(vntFieldTmp, 2)
  'データ数繰り返し
  For i = 1 To lngFieldEnd
    strField = PrepareCsvField(vntFieldTmp(1, i))
    '結果変数にフィール文字列を加算
    strResult = strResult & strField
    'データカウントがデータ数未満の場合
    If i < lngFieldEnd Then
      '区切り文字を結果変数に加算
      strResult = strResult & strDelim
    End If
  Next i
  
  ComposeLine = strResult
  
End Function

以下のプロシージャを追加して下さい

Private Function PrepareCsvField(ByVal vntValue As Variant) As String

' 改行コードの削除

  Dim i As Long
  Dim lngPos As Long
  Dim strSearch As String
  
  'ダブルクォーツで括るか否かの判断処理
  For i = 1 To 2
    strSearch = Choose(i, vbCr, vbLf)
    lngPos = InStr(1, vntValue, _
          strSearch, vbBinaryCompare)
    Do Until lngPos = 0
      vntValue = Left(vntValue, lngPos - 1) _
            & Mid(vntValue, lngPos + 1)
      lngPos = InStr(1, vntValue, _
              strSearch, vbBinaryCompare)
    Loop
  Next i
  
  PrepareCsvField = vntValue

End Function

0 hits

【14473】セル内の改行コードを消したい バカボン 04/5/30(日) 16:11 質問
【14475】Re:セル内の改行コードを消したい つん 04/5/30(日) 16:29 回答
【14479】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 16:41 質問
【14481】Re:セル内の改行コードを消したい つん 04/5/30(日) 16:55 回答
【14482】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 17:05 質問
【14484】Re:セル内の改行コードを消したい つん 04/5/30(日) 17:12 発言
【14485】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 17:16 回答
【14483】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 17:05 回答
【14478】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 16:37 回答
【14486】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 17:36 質問
【14488】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 17:51 質問
【14490】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 18:03 回答
【14489】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 17:59 回答
【14491】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 18:04 質問
【14492】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 18:24 回答
【14493】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 18:31 発言
【14495】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 18:33 発言
【14496】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 19:22 回答
【14497】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 19:32 発言
【14498】Re:セル内の改行コードを消したい かみちゃん 04/5/30(日) 19:40 発言
【14499】Re:セル内の改行コードを消したい バカボン 04/5/30(日) 19:41 発言
【14494】キャリッジリターンとか・・・ つん 04/5/30(日) 18:31 発言
【14500】Re:セル内の改行コードを消したい Hirofumi 04/5/30(日) 21:00 回答
【14545】Re:セル内の改行コードを消したい バカボン 04/6/1(火) 10:35 お礼

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