Me da la sensación que tu problema no está en cómo 'se sube' el fichero, sino más bien en cómo lo lees.
Si abres el fichero en modo binario (OPEN fichero FOR BINARY AS #numero) y mediante el método GET puedes leer uno o más bytes del fichero, almacenando el valor de cada byte en una variable o en un elemento de una matriz.
El valor Lo verás según el tipo de datos de la variable: si la variable es de tipo byte, lo verás como un número en decimal del 0 al 255, si es carácter lo verás como el caracter ascii correspondiente al valor del byte, ...
Podrías usar una función de este tipo para obtener el valor binario de un número decimal como ceros y unos en una cadena (aunque no sé cómo ira el rendimiento). Si el parámetro 'RevByteOrder' es True, indica que el orden de los bits que componen el número están en orden inverso, es decir, primero el bit más significativo :
Public Function Binario(ByVal NumBase 10 as Long,Optional ByVal RevByteOrder As Boolean) As String
Dim intExp As Integer
Dim str1 As String
Dim int1 As Integer
Do While True
If 2 ^ intExp > NumBase10 Then
If intExp > 0 Then
intExp = intExp - 1
End If
Exit Do
End If
intExp = intExp + 1
Loop
If Not RevByteOrder Then
For int1 = intExp To 0 Step -1
If NumBase10 < (2 ^ int1) Then
str1 = "0" & str1
Else
str1 = "1" & str1
NumBase10 = NumBase10 - (2 ^ int1)
End If
Next int1
Else
For int1 = intExp To 0 Step -1
If NumBase10 < (2 ^ int1) Then
str1 = str1 & "0"
Else
str1 = str1 & "1"
NumBase10 = NumBase10 - (2 ^ int1)
End If
Next int1
End If
Binario = str1
End Function
Espero que esto te vaya bien... Saludos y suerte.