[[20141211110744]] 『 CSV形式テキストの1レコードのセルへの転記処理』(muku) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『 CSV形式テキストの1レコードのセルへの転記処理』(muku)

お世話になります
下記の件お教えください

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_035.html

Private Sub GP_EDIT_FixLngRec(strREC As String, GYO As Long)

    ' A列(コード)は5バイトの文字列処理
    Cells(GYO, 1).Value = FP_GET_REC_To_String(strREC, 1, 5)
    ' B列(メーカー)は10バイトの文字列処理
    Cells(GYO, 2).Value = FP_GET_REC_To_String(strREC, 6, 10)
    ' C列(品名)は15バイトの文字列処理
    Cells(GYO, 3).Value = FP_GET_REC_To_String(strREC, 16, 15)
    ' D列(数量)は4バイトの数値処理
    Cells(GYO, 4).Value = FP_GET_REC_To_Numeric(strREC, 31, 4)
    ' E列(単価)は6バイトの数値処理
    Cells(GYO, 5).Value = FP_GET_REC_To_Numeric(strREC, 35, 6)
    ' F列(金額)は8バイトの数値処理
    Cells(GYO, 6).Value = FP_GET_REC_To_Numeric(strREC, 41, 8)
End Sub

(strREC, 1, 5)
strREC, 6, 10これらの1や6や16は何を表しているのでしょうか
理解できませんのでお教えください

< 使用 Excel:Excel2013、使用 OS:Windows8.1 >


答えは、その作者のURLにある、FP_GET_REC_To_Numeric()という自作関数にあります。
肝心のここも貼ってもらわないと…。

>Private Function FP_GET_REC_To_String(strREC As String, _
> lngStrPos As Long, _
> lngLngs As Long) As String
> Dim strREC2 As String
> strREC2 = Trim(StrConv(MidB(strREC, lngStrPos, lngLngs), vbUnicode))
> FP_GET_REC_To_String = strREC2
>End Function

で、関数を中を見ると、strREC は変換元の文字列。第2引数は何byte目から抜き出すか、
第3引数は何byte抜き出すか、になっていますね。
通常のMid関数だと何文字目から何文字、なので、これをバイト指定するための自作関数でしょうか。
(???) 2014/12/11(木) 11:26


ちなみに、元のURLにある呼び出し元の strREC = StrConv(TS.ReadLine, vbFromUnicode) も大事で、
これとFP_GET_REC_To_String()内の vbUnicode 指定がセットになっています。

VBAの内部コードはUnicodeなので、1文字は必ず2バイト。半角でも2バイト。これを変換して、
半角は1バイトになるようにしてからバイト指定で切り出して、その後にUnicodeに戻しているのですよ。
(???) 2014/12/11(木) 11:35


ありがとうございます。しっかり理解したいと思います
(muku) 2014/12/11(木) 12:39

いつもご指導ありがとうございます。理解でしました。まだまだ絡みが分からず苦戦していますが何度も繰り返すことで少しづつわかっていけたらありがたいと思っています。今後ともよろしくお願いします

(muku) 2014/12/11(木) 12:46


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.