No es muy práctico ese método, porque a priori no sabes si tienes 3 o 20 partes.
Lo correcto sería que una función que utilizara un bucle...
en ódigo sería más o menos:
Fíjate que tomamos los archivos del 1 en adelante y se pegan todos en el archivo 0
Private Function RefundirArchivo(ByRef Rutas() As String) As String
Dim f1 As Integer, f2 As Integer
Dim b() As Byte, k As Long, n As Integer, t As Long
On Local Error GoTo sale ' típicamente un fallo con una ruta, un archivo no se pudo abrir, no existe,etc...
If (Not (Rutas)) <> -1 Then ' la matriz tiene elementos ?
f1 = FreeFile: f2 = FreeFile
Open Rutas(0) For Binary As #f1
t = 1
For n = 1 To UBound(Rutas)
Open Rutas(n) For Binary As #f2 ' abrimos archivo uno a uno
k = LOF(f2) ' nos informamos de su tamaño
ReDim b(0 To k - 1) ' reservamos memoria
Get #f2, , b ' leemos origen
Put #f1, t, b ' pegamos en destino
t = t + k ' actualizamos puntero de escritura
Close #f2 ' cerramos archivo actual
Next
Erase b ' liberamos memoria
RefundirArchivo = Rutas(0) ' si todo fue bien devolvemos la ruta del archivo resultante, si falló algo se devuelve una cadena vacía.
End If
sale:
Close #f1, f2
End Function
Para que funciones correctamente se requiere ciertas condiciones... la mas obvia es:
* La matriz de rutas esté correctamente ordenada si las partes se unen en diferente orden ya sabes que podrá salir.
* El tamaño final del archivo no puede superar el tamaño de un long (2GB.)
Para probarlo: imginemos que tenemos un lote de archivos en la unidad c, que sellaman 'Mi archivo.jpg' y los siguientes en la forma 'Mi archivo-00x.jpg' donde x es un cifra del 1 al 9, queremos por tanto refundir esos archivos del 1 al 9 sobre el primero.. usando el evento click del formulario:
Private Sub Form_Click()
Dim r() As String, res As String, k as integer
' recopilación de las rutas...
ReDim r(0 To 9)
r(0) = "C:Mi archivo.jpg"
For k = 1 To 9
r(k) = "C:Mi archivo-00" & CStr(k) & ".jpg"
Next
res = RefundirArchivo(r) ' llamada a la función
' avisar del resultado
If res <> "" Then
MsgBox "Archivo refundido en el archivo: " & res
Else
MsgBox "Algo falló al refundir archivos..."
MsgBox
End Sub
p.d.: Adicionalmente el método que te señalan más arriba podría fallar, ya que utiliza caracteres para leer un archivo, un carácter se compone de 2 bytes, así cuando leas ficheros cuyo tamaño no sea par, fallará.... porque estarás pegando un byte más que desplazará a los de los siguientes archivos.