Private Sub fileInput() Dim fPath As String Dim i As Integer Dim limitLen As Long Dim filLen As Long Dim oneFile() As Byte Dim files As New Collection Dim fileNo As Integer Dim fileLeft As Long Dim fileStart As Long
limitLen = 2097152 '2*1024*1024 fPath = CommonDialog1.filename If fPath = "" Then MsgBox "選択ください" Exit Sub End If filLen = FileLen(fPath) 'byte
fileStart = 1 fileNo = FreeFile fileLeft = filLen
Open fPath For Binary As fileNo For i = 1 To IIf((filLen Mod limitLen = 0), Int(filLen / limitLen), (Int(filLen / limitLen) + 1))
If fileLeft < limitLen Then ReDim oneFile(1 To fileLeft) Else ReDim oneFile(1 To limitLen) End If
Get #fileNo, fileStart, oneFile files.Add oneFile fileStart = fileStart + limitLen fileLeft = filLen - limitLen Next i Close #fileNo
Debug.Print files.Count
'Open App.Path & "\FORMAT\test.xls" For Binary As fileNo Open App.Path & "\FORMAT\test1.doc" For Binary As fileNo Put #fileNo, 1, files.Item(1) Close #fileNo
Dim fPath As String
Dim i As Integer
Dim limitLen As Long
Dim filLen As Long
Dim oneFile() As Byte
Dim files As New Collection
Dim fileNo As Integer
Dim fileLeft As Long
Dim fileStart As Long
limitLen = 2097152 '2*1024*1024
fPath = CommonDialog1.filename
If fPath = "" Then
MsgBox "選択ください"
Exit Sub
End If
filLen = FileLen(fPath) 'byte
fileStart = 1
fileNo = FreeFile
fileLeft = filLen
Open fPath For Binary As fileNo
For i = 1 To IIf((filLen Mod limitLen = 0), Int(filLen / limitLen), (Int(filLen / limitLen) + 1))
If fileLeft < limitLen Then
ReDim oneFile(1 To fileLeft)
Else
ReDim oneFile(1 To limitLen)
End If
Get #fileNo, fileStart, oneFile
files.Add oneFile
fileStart = fileStart + limitLen
fileLeft = filLen - limitLen
Next i
Close #fileNo
Debug.Print files.Count
'Open App.Path & "\FORMAT\test.xls" For Binary As fileNo
Open App.Path & "\FORMAT\test1.doc" For Binary As fileNo
Put #fileNo, 1, files.Item(1)
Close #fileNo
End Sub
我用小于2m的文件测试,重新写出来的都跟原来的不一样,问题出在哪里呢?