2010-07-28 57 views
0

我需要导入PDF和​​XLS对象并将它们转换为二进制。下面的代码不起作用,显然是因为“fd.SelectedItems(1)”是对象的路径而不是对象本身。如何在Access 2007 VBA中将传入对象转换为二进制文件?

如果我把“fileToUpload”作为一个对象调暗,我会得到一个“运行时间”91'对象变量或者块变量未设置“。

如果我没有特别昏暗“fileToUpload”,当我到达最后一行时,我得到“运行时间”424'所需的对象“。

任何人都知道魔法字吗?

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) 

回答

0

FileToUpload应该是什么?如果你把它作为一个对象变暗,你需要设置它,即SET FileToUpload = fd.SelectedItems(1),但我不认为这必然是正确的事情,就我所知,fd.SelectedItems(1 )将返回一个具有文件名/路径的字符串值,而不是实际的文件对象。在我看来,它应该是一个字符串。

也许这将工作:

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

大卫,为响应千恩万谢。当我到达最后一行时,我得到了“运行时间”424'所需对象'。 strFileToUpload是路径,我想我需要strFileToUpload是PDF对象本身。任何想法我怎么能得到那个? – jrc 2010-07-29 13:46:07

+0

嗯,我不知道System.IO.File.ReadAllBytes是什么,所以你必须看看ReadAllBytes的数据结构。我的怀疑是你在这里混入了文件系统对象代码,你可能需要FSO的文件对象。但我只是在那里猜测。 – 2010-07-30 18:01:56

相关问题