Excel中:运行时错误13类型不匹配

Excel中:运行时错误13类型不匹配

问题描述:

我得到运行时错误“13”在然后结束这个代码,即使我尝试的代码Excel中:运行时错误13类型不匹配

Public Property Get cnnString() As String 
'old: strcnnString = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & Me.DBFolderName & ";Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" 
'strcnnString = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & Me.DBFolderName & ";Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" 
'new code before edits: strcnnString = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & folder_name & ";Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False " 
strcnnString = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & Me.DBFolderName & ";Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" 
cnnString = strcnnString 
End Property 

这里的注释行之间的切换的其余部分代码

Private strcnnString As String 
Private folder_name As String 

Public Property Get DBFolderName() As String 
DBFolderName = folder_name 
End Property 

Public Property Let DBFolderName(ByVal newvalue As String) 
folder_name = newvalue 
End Property 

'calling the property which rais the error 
    With ActiveSheet.QueryTables.Add(Connection:=Array(Me.cnnString), Destination:=Range("A1")) 

任何解决方案,请?

+1

你能确定Me.DBfolderName返回一个字符串类型 - 以及什么线例如使属性调用你正在返回它接受一个字符串。 – Andrew 2010-01-11 13:30:37

+0

我编辑的问题作为您的意见回答 – 2010-01-11 15:43:44

我会怀疑你的连接字符串,这里是看的好去处:http://www.connectionstrings.com/excel-2007

或者试试:

strcnnString = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & Me.DBFolderName & ";" 

编辑再评论

我不太清楚我给你弄,但也许你的意思是:

strcnnString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & Me.DBFolderName & ";" 

编辑更多注意事项

我不能完全明白你为什么要使用阵列(cnnString),怎么样:

ActiveSheet.QueryTables.Add Connection:=cnnString, Destination:=Range("A1") 
+0

您提供的strcnnString值解决了这个问题,但提出了其他问题:运行错误“1004”“应用程序定义或对象定义的错误” 我的问题在这里是我切换代码从与2007年的Excel 2007工作到2003年的工作,因为没有在Excel 2007中的连接,所以我使用了queryTable对象,而现在我的问题是如何替换连接字符串,旧的问题与“旧:”前缀,比你支持 – 2010-01-11 14:38:52

+0

我已经增加了一个笔记。 – Fionnuala 2010-01-11 15:24:01

+0

同样的错误提高 – 2010-01-11 15:44:37

QueryTables.Add可以接受一些事情,但我不确定数组是否是其中之一,你可以尝试将它传递给连接字符串而不将它放入数组中。