掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CSVの項目の数をしるには (ID:88300)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ん〜と、ソースをそのまま出せればいいのだが -- Dim i As Integer Dim work As String Dim letter As String Dim chrDQ As String Dim chrDQDQ As String Dim fgDQ As Boolean Dim strDummy(0) As String '初期設定 work = "" letter = "" chrDQ = Chr(34) 'ダブルクォート chrDQDQ = Chr(34) & Chr(34) '二重ダブルクォート fgDQ = False For i = 1 To Len(str) letter = Mid(str, i, 1) If letter = chrDQ Then '文字がダブルクォートの場合 If fgDQ = True Then '項目がダブルクォートで囲まれている場合 If Mid(str, (i + 1), 1) = "," Or Mid(str, (i + 1), 1) = "" Then '次の文字がカンマ、または次の文字がない場合 '項目の終わりを示すダブルクォート fgDQ = False ElseIf Mid(str, (i + 1), 1) = chrDQ Then '次の文字がダブルクォートの場合 'エスケープ文字と項目に含まれるダブルクォート文字 work = work & letter i = i + 1 Else 'その他の文字の場合 '項目に含まれるダブルクォート文字がエスケープされていない? '文字列は分割不可能な1つの項目と解釈し、受け取った文字列をそのまま返して終了 strDummy(0) = str gfSplitCSV = strDummy Exit Function End If Else '項目の先頭を表すダブルクォート fgDQ = True End If ElseIf letter = "," Then '文字がカンマの場合 If fgDQ Then '項目がダブルクォートで囲まれている場合 '項目に含まれるカンマ文字 work = work & letter Else '項目を囲むダブルクォートの外、つまり区切り文字としてのカンマの場合 'タブ文字に変換 work = work & vbTab End If Else 'それ以外の場合 '項目に含まれる文字 work = work & letter End If Next gfSplitCSV = Split(work, vbTab) End Function 普段から使っている関数です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.