ADODB.Stream (Microsoft ActiveX Data Objects)を使えば、コード変換をしながらCSVデータを取り込むことが可能。
CSVファイルの作成元のシステムが、Windows(Excel)以外で、文字コードを気にしなければならない場合、このサンプルコードが役に立つ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Sub ADODBStreamを利用したコード変換機能付きCSVファイル取込() 'microsoft cdo for windows 2000 参照設定 メール処理用 'Microsoft ActiveX Data Objects x.x Library 参照設定 Stremオブジェクトによるコード変換用 Dim FileName As String Dim Charset As String FileName = "C:\MyCSVlist_Shift-JIS.csv" 'CSVファイル名を指定 'https://docs.microsoft.com/ja-jp/sql/ado/reference/ado-api/charset-property-ado?view=sql-server-ver15 'ストリームの内容が変換される文字セットを指定する文字列値を設定または返します。 '既定値は Unicodeです。 使用できる値は、インターネット文字セット名としてインターフェイスで渡される一般的な文字列です '(たとえば、"iso-8859-1"、"Windows-1252" など)。 システムによって認識される文字セット名の一覧については、 'Windows レジストリの HKEY_CLASSES_ROOT \MIME\Database\Charset のサブキーを参照してください。 ' Charset = "UTF-8" Charset = "Shift-JIS" 'ここではShift-JISを指定 Dim Buf As String, RowIndex As Long Dim Tmp As Variant, ColmunIndex As Long Dim ADOStream As ADODB.Stream Set ADOStream = New ADODB.Stream Dim Ws As Worksheet Set Ws = ActiveSheet Dim aa As ADODB.StreamReadEnum RowIndex = 1 'ストリームを開く With ADOStream .Charset = Charset .Open .LoadFromFile FileName '取込 Do Until .EOS 'https://docs.microsoft.com/ja-jp/sql/ado/reference/ado-api/readtext-method?view=sql-server-ver15 Buf = .ReadText(ADODB.StreamReadEnum.adReadLine) '1行ずつ読み込むときは「adReadLine(-2)」を指定 Tmp = Split(Buf, ",") 'カンマ分割 For ColmunIndex = 0 To UBound(Tmp) Ws.Cells(RowIndex, ColmunIndex + 1) = Tmp(ColmunIndex) Next ColmunIndex RowIndex = RowIndex + 1 Loop '閉じる .Close End With '終了処理 Set ADOStream = Nothing End Sub |
おまけ HKEY_CLASSES_ROOT\MIME\Database\Charsetの確認コマンド
一覧と、jisコード、unicode関連の登録状況を確認した結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
PS C:\Users\papanda925> reg query HKEY_CLASSES_ROOT\MIME\Database\Charset HKEY_CLASSES_ROOT\MIME\Database\Charset\ANSI_X3.4-1968 HKEY_CLASSES_ROOT\MIME\Database\Charset\ANSI_X3.4-1986 HKEY_CLASSES_ROOT\MIME\Database\Charset\arabi HKEY_CLASSES_ROOT\MIME\Database\Charset\ascii HKEY_CLASSES_ROOT\MIME\Database\Charset\ASMO-708 HKEY_CLASSES_ROOT\MIME\Database\Charset\Big5 HKEY_CLASSES_ROOT\MIME\Database\Charset\chinese HKEY_CLASSES_ROOT\MIME\Database\Charset\CN-GB HKEY_CLASSES_ROOT\MIME\Database\Charset\cp1256 HKEY_CLASSES_ROOT\MIME\Database\Charset\cp367 HKEY_CLASSES_ROOT\MIME\Database\Charset\cp819 HKEY_CLASSES_ROOT\MIME\Database\Charset\cp852 HKEY_CLASSES_ROOT\MIME\Database\Charset\cp866 HKEY_CLASSES_ROOT\MIME\Database\Charset\csASCII HKEY_CLASSES_ROOT\MIME\Database\Charset\csbig5 HKEY_CLASSES_ROOT\MIME\Database\Charset\csEUCKR HKEY_CLASSES_ROOT\MIME\Database\Charset\csEUCPkdFmtJapanese HKEY_CLASSES_ROOT\MIME\Database\Charset\csGB2312 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISO2022JP HKEY_CLASSES_ROOT\MIME\Database\Charset\csISO2022KR HKEY_CLASSES_ROOT\MIME\Database\Charset\csISO58GB231280 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatin1 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatin2 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatin4 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatin5 HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatinArabic HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatinCyrillic HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatinGreek HKEY_CLASSES_ROOT\MIME\Database\Charset\csISOLatinHebrew HKEY_CLASSES_ROOT\MIME\Database\Charset\csKOI8R HKEY_CLASSES_ROOT\MIME\Database\Charset\csKSC56011987 HKEY_CLASSES_ROOT\MIME\Database\Charset\csShiftJIS HKEY_CLASSES_ROOT\MIME\Database\Charset\csUnicode11UTF7 HKEY_CLASSES_ROOT\MIME\Database\Charset\csWindows31J HKEY_CLASSES_ROOT\MIME\Database\Charset\cyrillic HKEY_CLASSES_ROOT\MIME\Database\Charset\DOS-720 HKEY_CLASSES_ROOT\MIME\Database\Charset\DOS-862 HKEY_CLASSES_ROOT\MIME\Database\Charset\DOS-874 HKEY_CLASSES_ROOT\MIME\Database\Charset\ECMA-114 HKEY_CLASSES_ROOT\MIME\Database\Charset\ECMA-118 HKEY_CLASSES_ROOT\MIME\Database\Charset\ELOT_928 HKEY_CLASSES_ROOT\MIME\Database\Charset\euc-jp HKEY_CLASSES_ROOT\MIME\Database\Charset\euc-kr HKEY_CLASSES_ROOT\MIME\Database\Charset\Extended_UNIX_Code_Packed_Format_for_Japanese HKEY_CLASSES_ROOT\MIME\Database\Charset\GB2312 HKEY_CLASSES_ROOT\MIME\Database\Charset\GBK HKEY_CLASSES_ROOT\MIME\Database\Charset\GB_2312-80 HKEY_CLASSES_ROOT\MIME\Database\Charset\greek HKEY_CLASSES_ROOT\MIME\Database\Charset\greek8 HKEY_CLASSES_ROOT\MIME\Database\Charset\hebrew HKEY_CLASSES_ROOT\MIME\Database\Charset\hz-gb-2312 HKEY_CLASSES_ROOT\MIME\Database\Charset\IBM367 HKEY_CLASSES_ROOT\MIME\Database\Charset\ibm819 HKEY_CLASSES_ROOT\MIME\Database\Charset\ibm852 HKEY_CLASSES_ROOT\MIME\Database\Charset\ibm866 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-2022-jp HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-2022-kr HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-1 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-11 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-2 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-3 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-4 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-5 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-6 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO-8859-8 Visual HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-8-i HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-8859-9 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-100 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-101 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-110 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-111 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-126 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-127 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-138 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-144 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-148 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-149 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-58 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso-ir-6 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO646-US HKEY_CLASSES_ROOT\MIME\Database\Charset\iso8859-1 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso8859-2 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_646.irv:1991 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso_8859-1 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso_8859-1:1987 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso_8859-2 HKEY_CLASSES_ROOT\MIME\Database\Charset\iso_8859-2:1987 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-4 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-4:1988 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-5 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-5:1988 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-6 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-6:1987 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-7:1987 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-8:1988 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-9 HKEY_CLASSES_ROOT\MIME\Database\Charset\ISO_8859-9:1989 HKEY_CLASSES_ROOT\MIME\Database\Charset\koi HKEY_CLASSES_ROOT\MIME\Database\Charset\koi8-r HKEY_CLASSES_ROOT\MIME\Database\Charset\koi8-ru HKEY_CLASSES_ROOT\MIME\Database\Charset\korean HKEY_CLASSES_ROOT\MIME\Database\Charset\KSC5601 HKEY_CLASSES_ROOT\MIME\Database\Charset\KSC_5601 HKEY_CLASSES_ROOT\MIME\Database\Charset\ks_c_5601 HKEY_CLASSES_ROOT\MIME\Database\Charset\ks_c_5601-1987 HKEY_CLASSES_ROOT\MIME\Database\Charset\ks_c_5601-1989 HKEY_CLASSES_ROOT\MIME\Database\Charset\l1 HKEY_CLASSES_ROOT\MIME\Database\Charset\l2 HKEY_CLASSES_ROOT\MIME\Database\Charset\l4 HKEY_CLASSES_ROOT\MIME\Database\Charset\l5 HKEY_CLASSES_ROOT\MIME\Database\Charset\latin1 HKEY_CLASSES_ROOT\MIME\Database\Charset\latin2 HKEY_CLASSES_ROOT\MIME\Database\Charset\latin4 HKEY_CLASSES_ROOT\MIME\Database\Charset\latin5 HKEY_CLASSES_ROOT\MIME\Database\Charset\logical HKEY_CLASSES_ROOT\MIME\Database\Charset\ms_Kanji HKEY_CLASSES_ROOT\MIME\Database\Charset\shift-jis HKEY_CLASSES_ROOT\MIME\Database\Charset\shift_jis HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-1-1-utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-1-1-utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-2-0-utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicodeFFFE HKEY_CLASSES_ROOT\MIME\Database\Charset\us HKEY_CLASSES_ROOT\MIME\Database\Charset\us-ascii HKEY_CLASSES_ROOT\MIME\Database\Charset\utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\visual HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1250 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1251 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1252 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1253 HKEY_CLASSES_ROOT\MIME\Database\Charset\Windows-1254 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1255 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1256 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1257 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-1258 HKEY_CLASSES_ROOT\MIME\Database\Charset\windows-874 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-ansi HKEY_CLASSES_ROOT\MIME\Database\Charset\x-cp1250 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-cp1251 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-euc HKEY_CLASSES_ROOT\MIME\Database\Charset\x-euc-jp HKEY_CLASSES_ROOT\MIME\Database\Charset\x-ms-cp932 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-sjis HKEY_CLASSES_ROOT\MIME\Database\Charset\x-unicode-2-0-utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-unicode-2-0-utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-user-defined HKEY_CLASSES_ROOT\MIME\Database\Charset\x-x-big5 HKEY_CLASSES_ROOT\MIME\Database\Charset\_autodetect HKEY_CLASSES_ROOT\MIME\Database\Charset\_autodetect_all HKEY_CLASSES_ROOT\MIME\Database\Charset\_autodetect_kr HKEY_CLASSES_ROOT\MIME\Database\Charset\_iso-2022-jp$ESC HKEY_CLASSES_ROOT\MIME\Database\Charset\_iso-2022-jp$SIO PS C:\Users\papanda925> reg query HKEY_CLASSES_ROOT\MIME\Database\Charset | Select-String utf HKEY_CLASSES_ROOT\MIME\Database\Charset\csUnicode11UTF7 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-1-1-utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-1-1-utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\unicode-2-0-utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\utf-8 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-unicode-2-0-utf-7 HKEY_CLASSES_ROOT\MIME\Database\Charset\x-unicode-2-0-utf-8 PS C:\Users\papanda925> reg query HKEY_CLASSES_ROOT\MIME\Database\Charset | Select-String jis HKEY_CLASSES_ROOT\MIME\Database\Charset\csShiftJIS HKEY_CLASSES_ROOT\MIME\Database\Charset\shift-jis HKEY_CLASSES_ROOT\MIME\Database\Charset\shift_jis HKEY_CLASSES_ROOT\MIME\Database\Charset\x-sjis |
コメント