我试图创建一个宏,将拉动一些数据到Excel 2003从SQL Server 2005Excel VBA中的SQL Server数据导入“类型不匹配错误”
的SQL代码是在这个宏,以及部分此代码来自Excel中单元格中的值。这可以在某种程度上起作用,但是当我用于SQL代码的Excel单元格中的数据超过公式预览中的一行(或大约170个字符)时,出现“类型不匹配”错误。否则,它会正常工作。
With ActiveSheet.QueryTables.Add(Connection:=Array(_
"OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=anglobisql;Use Procedure for Prepare=1;Auto " _
, _
"Translate=True;Packet Size=4096;Workstation ID=MyIDHere;Use Encryption for Data=False;Tag with column collation when possible=F" _
, "alse;Initial Catalog=DATABASENAME"), Destination:=Range("A1"))
.CommandType = xlCmdSql
.CommandText = Array("SELECT COLUMN1, COLUMN2 FROM TABLENAME (nolock) WHERE COLUMN1 IN (" & ActiveWorkbook.Sheets("Sheet1").Range("e607").Value & ")")
.Name = "DATABASE TABLENAME"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"H:\My Data Sources\DATABASE TABLENAME.odc"
.Refresh BackgroundQuery:=False
很明显,所有的数据库名和表名都是正确填写的。
知道为什么这要塌下来(是否有字符数限制,还是因为单元格的值继续到在Excel公式预览栏中的下一行就失败了呢?这怎么可能是固定的?
很多赞赏,
亚历
32,767个字符为一个Excel细胞的极限。我的猜测是你所有的数据都被插入到一个Cell(A1)中。 – 2012-03-28 14:04:04
不太确定您是指输入还是输出。 对于输出:当sql查询正常工作数据通过不同的单元格时,所以这不是问题 对于输入:截止似乎是大约170个字符,所以再次32,767不是问题。 – alexei7 2012-03-28 14:09:38
我可以看到在Excel中的“编辑OLE DB查询”的“命令文本”中似乎确实存在文本限制,但是我再次认为我很好。 – alexei7 2012-03-28 14:13:57