ファイルの先頭にデータを追加する

 


'ファイルの指定バイト位置に文字列を挿入する
Sub InsertData(sFileName As String, sNewData As String, lInsPos As Long)
    Dim iFileNum As Integer 'ファイル番号
    Dim bData() As Byte 'データ格納用
    Dim lPos As Long
    ReDim bData(FileLen(sFileName) - 1)
    iFileNum = FreeFile
    Open sFileName For Binary As #iFileNum
    Get #iFileNum, , bData  'データ読み込み
    lInsPos = ValidPos(bData, lInsPos) 'SJIS全角文字ぶった切り回避のため
    Put #iFileNum, 1, CStr(StrConv(LeftB$(bData, lInsPos), vbUnicode)) '既存データを挿入位置前まで
    lPos = Seek(iFileNum)
    Debug.Print lPos
    Put #iFileNum, lPos, sNewData '挿入データ
    lPos = Seek(iFileNum)
    Debug.Print lPos
    Put #iFileNum, lPos, CStr(StrConv(MidB$(bData, lInsPos + 1), vbUnicode)) '残りの既存データをその後ろに付加
    Close #iFileNum
End Sub

Private Function ValidPos(sWK() As Byte, lPos As Long) As String
'SJIS全角文字ぶった切り回避用チェック
Dim i As Long, lMax As Long, flgAvoidPos As Boolean
    lMax = lPos
    ValidPos = lPos
    flgAvoidPos = False
    If UBound(sWK) < lPos Then lMax = UBound(sWK)
    For i = 1 To lMax
        If sWK(i) > &H80 And flgAvoidPos = False Then
            flgAvoidPos = True
        Else
            flgAvoidPos = False
        End If
    Next i
    If flgAvoidPos = True Then
        ValidPos = lMax - 1
    Else
        ValidPos = lMax
    End If
End Function



トップページに戻る

Tips一覧に戻る