2010-07-28 9 views
0

J'ai besoin d'importer des objets PDF et XLS et de les convertir en binaire. Le code suivant ne fonctionne pas, apparemment parce que le "fd.SelectedItems (1)" est le chemin de l'objet au lieu de l'objet lui-même.Comment convertir un objet entrant en binaire dans Access 2007 VBA?

Si je dim "fileToUpload" en tant qu'objet, j'obtiens une variable d'objet "run time '91' ou avec une variable de bloc non définie".

Si je ne précise pas Dim "fileToUpload", quand j'arrive à la dernière ligne ci-dessous, j'obtiens "run time '424' Objet requis".

Quelqu'un connaît les mots magiques?

Dim fd As FileDialog 
    Dim ImageToBytes() As Byte 
    Dim ImageCode As String 

    FilePickerControl = False 
    Set fd = Application.FileDialog(msoFileDialogFilePicker) 
    fd.AllowMultiSelect = False 
    If fd.Show = -1 Then 
    FileToUpload = fd.SelectedItems(1) 
    End If 

    ImageToBytes = System.IO.File.ReadAllBytes(FileToUpload) 

Répondre

0

Qu'est-ce que FileToUpload est censé être? Si vous le diminuez comme un objet, vous devez le définir, c'est-à-dire, SET FileToUpload = fd.SelectedItems (1), mais je ne pense pas que ce soit nécessairement la bonne chose, pour autant que je sache, fd.SelectedItems (1) va retourner une valeur de chaîne qui a le nom/chemin du fichier, pas un objet de fichier réel. On dirait que ça devrait être une ficelle.

Peut-être que ceci fonctionne:

Dim fd As FileDialog 
    Dim strFileToUpload As String 
    Dim ImageToBytes() As Byte 
    Dim ImageCode As String 

    FilePickerControl = False 
    Set fd = Application.FileDialog(msoFileDialogFilePicker) 
    fd.AllowMultiSelect = False 
    If fd.Show = -1 Then 
    strFileToUpload = fd.SelectedItems(1) 
    End If 

    ImageToBytes = System.IO.File.ReadAllBytes(strFileToUpload) 
+0

David, un grand merci pour la réponse. Quand je suis arrivé à la dernière ligne, j'ai "run time '424' Object required". strFileToUpload est le chemin et je pense que j'ai besoin de strFileToUpload pour être l'objet PDF lui-même. Une idée de comment je peux obtenir ça? – jrc

+0

Eh bien, je n'ai aucune idée de ce que System.IO.File.ReadAllBytes est, donc vous devrez voir ce que ReadAllBytes attend pour sa structure de données. Mon soupçon est que vous avez mélangé le code de l'objet système de fichiers ici, et vous pourriez avoir besoin d'un objet fichier de l'OFS. Mais je devine juste là. –