2013-03-27 86 views
0

我在Access 2007数据库中有一项功能,在我的PC升级到Office 2010之前它一直正常工作。该过程如下,并且违规行是设置了'originalFolder'的行:VBA转换Office 2007到Office 2010

Function ExportToSharePoint() 
Dim oFs As New FileSystemObject 
Dim originalFolder As Folder 
Dim destinationPath As String 
Dim ofile As file 
Dim XLApp As Excel.Application 
Dim xlwb As Excel.Workbook 
Dim strFileName As String 
Dim oFolder As String 
oFolder = "//chs114file1/dovpasres/Public/Script/InfoCentre/Delays" 
Set oFs = CreateObject("Scripting.FileSystemObject") 
Set XLApp = New Excel.Application 
    Kill "K:\Public\Script\InfoCentre\Delays\*.xlk" 
    Set originalFolder = oFs.GetFolder(oFolder) 
    destinationPath = "https://companyname.sharepoint.com/PRR/Documents/" 

    For Each ofile In originalFolder.Files 

     strFileName = oFs.GetFileName(ofile) 

      Set xlwb = XLApp.Workbooks.Open(ofile) 
      xlwb.SaveAs (destinationPath + strFileName) 

    Next 

xlwb.Close True 
XLApp.Quit 
Set xlwb = Nothing 
Set XLApp = Nothing 

End Function 

我得到的错误是:

错误13:数据类型不匹配

我感到迷惑,这是一个字符串,如热曲IRED?

+0

什么错误信息你好吗? – Geoff 2013-03-27 15:20:35

+0

您是否检查缺少的参考?调试?压实和修复? – Fionnuala 2013-03-27 15:21:26

+0

另外,权限? – Geoff 2013-03-27 15:25:17

回答

0

微软文件列出了GetFolder返回类型为Folder,但我怀疑你的问题是由早期绑定混合后期绑定(通过CreateObject)(通过强类型的文件夹变量)引起的。
无论是进口的参考,避免CreateObject呼叫,或更改类型的变体,或者是对象:

Dim originalFolder As variant 
+0

如果在需要文件夹时没有返回文件夹,它不是最好吗? – Fionnuala 2013-03-27 15:53:06

+0

您应该能够检查一个空值来检测GetFolder失败的时间(无论您使用哪种表单,您都必须执行此操作)。 – Geoff 2013-03-27 15:55:10

+0

我认为当它已经存在时,会跳过'Set oFs = CreateObject(“Scripting.FileSystemObject”)'并且被引用为'Dim oFs As New FileSystemObject'。强类型有助于防止错误,应该可以检查文件系统对象是否存在该文件夹,然后分配它。 – Fionnuala 2013-03-27 16:00:32