Excel VBA質問箱 IV

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

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


47196 / 76732 ←次へ | 前へ→

【34497】Re:フォルダ内のファイル読み込み方法
回答  Hirofumi  - 06/2/3(金) 21:39 -

引用なし
パスワード
   以下のプロシージャを前のコードと同じ標準モジュールに入れて下さい
そして、「Public Sub CSVRead()」の中の以下を変更して下さい

          If strBuff <> "" Then
            'CSVをフィールドに分割
'            vntField = Split(strBuff, ",")
            vntField = SplitCsv(strBuff, ",") '★変更
            '指定シートの指定行列位置について

此れで、Split関数では無く、CSV読み込み専用のFunctionプロシージャが使われますので、
数値として扱われます

Private Function SplitCsv(ByVal strLine As String, _
            Optional strDelimiter As String = ",", _
            Optional strQuote As String = """", _
            Optional strRet As String = vbCrLf, _
            Optional blnMulti As Boolean) As Variant

'      strLine     :分割元と成る文字列
'      strDelimiter  :区切り文字
'      SplitCsv    :戻り値、切り出された文字配列

  Dim lngDPos As Long
  Dim vntData() As Variant
  Dim lngStart As Long
  Dim i As Long
  Dim vntField As Variant
  Dim lngLength As Long
  
  i = 0
  lngStart = 1
  lngLength = Len(strLine)
  blnMulti = False
  Do
    ReDim Preserve vntData(i)
    If Mid$(strLine, lngStart, 1) <> strQuote Then
      lngDPos = InStr(lngStart, strLine, _
            strDelimiter, vbBinaryCompare)
      If lngDPos > 0 Then
        vntField = Mid$(strLine, lngStart, _
                  lngDPos - lngStart)
        If lngDPos = lngLength Then
          ReDim Preserve vntData(i + 1)
        End If
        lngStart = lngDPos + 1
      Else
        vntField = Mid$(strLine, lngStart)
        lngStart = lngLength + 1
      End If
    Else
      lngStart = lngStart + 1
      Do
        lngDPos = InStr(lngStart, strLine, _
                strQuote, vbBinaryCompare)
        If lngDPos > 0 Then
          vntField = vntField & Mid$(strLine, _
                lngStart, lngDPos - lngStart)
          lngStart = lngDPos + 1
          Select Case Mid$(strLine, lngStart, 1)
            Case ""
              Exit Do
            Case strDelimiter
              lngStart = lngStart + 1
              Exit Do
            Case strQuote
              lngStart = lngStart + 1
              vntField = vntField & strQuote
          End Select
        Else
          blnMulti = True
          vntField = Mid$(strLine, lngStart) & strRet
          lngStart = lngLength + 1
          Exit Do
        End If
      Loop
    End If
    vntData(i) = vntField
    vntField = Empty
    i = i + 1
  Loop Until lngLength < lngStart
  
  SplitCsv = vntData()
  
End Function

0 hits

【34383】フォルダ内のファイル読み込み方法 たく 06/2/1(水) 18:53 質問
【34397】Re:フォルダ内のファイル読み込み方法 inoue 06/2/1(水) 22:12 発言
【34402】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/1(水) 23:40 発言
【34404】Re:フォルダ内のファイル読み込み方法 inoue 06/2/2(木) 0:33 発言
【34405】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/2(木) 0:42 発言
【34406】Re:フォルダ内のファイル読み込み方法 inoue 06/2/2(木) 0:50 発言
【34407】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/2(木) 1:00 発言
【34413】Re:フォルダ内のファイル読み込み方法 inoue 06/2/2(木) 9:15 発言
【34441】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/2(木) 20:35 質問
【34446】Re:フォルダ内のファイル読み込み方法 inoue 06/2/2(木) 22:00 発言
【34447】Re:フォルダ内のファイル読み込み方法 inoue 06/2/2(木) 22:03 発言
【34448】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/2(木) 22:17 発言
【34449】Re:フォルダ内のファイル読み込み方法 Hirofumi 06/2/2(木) 22:50 回答
【34450】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/2(木) 23:01 発言
【34497】Re:フォルダ内のファイル読み込み方法 Hirofumi 06/2/3(金) 21:39 回答
【34539】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/5(日) 22:09 お礼
【34540】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/5(日) 22:20 質問
【34571】Re:フォルダ内のファイル読み込み方法 Hirofumi 06/2/6(月) 22:41 回答
【34602】Re:フォルダ内のファイル読み込み方法 yuuka 06/2/7(火) 23:16 お礼

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