2013-03-27 88 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