Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何在VBA代码中使用SQL选择查询?_Excel_Vba - Fatal编程技术网

Excel 如何在VBA代码中使用SQL选择查询?

Excel 如何在VBA代码中使用SQL选择查询?,excel,vba,Excel,Vba,我有一个查询SQL,我想把它放在一个VBA代码中,把结果带到Excel表格中 我尝试了下面粘贴的代码 Sub Connect2SQLXpress() Dim Ors As Object Dim oCon As Object Set oCon = CreateObject("ADODB.Connection") Set Ors = CreateObject("ADODB.Recordset") Set oCon = New ADODB.Connection oCon.ConnectionS

我有一个查询
SQL
,我想把它放在一个
VBA
代码中,把结果带到Excel表格中

我尝试了下面粘贴的代码

Sub Connect2SQLXpress()

Dim Ors As Object Dim oCon As Object

Set oCon = CreateObject("ADODB.Connection") 
Set Ors = CreateObject("ADODB.Recordset")

Set oCon = New ADODB.Connection oCon.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI" 
   oCon.Open
Ors.Source = "Select KeyInstn,LongName,Shortname,Shortestname From New_inst WHERE ......" 

Ors.Open Range("A1").CopyFromRecordset Ors
Ors.Close oCon.Close

If Not Ors Is Nothing Then Set Ors = Nothing 
If Not oCon Is Nothing Then Set oCon = Nothing

有人能帮我找出哪里出了问题吗???

要创建一个好的连接字符串,请尝试以下操作:

  • 右键单击桌面(或任何文件夹)
  • 选择新建>文本文件
  • 右键单击已创建的文件,并将其名称(和扩展名)更改为ConnectionInfo.UDL
  • 双击文件ConnectionInfo.UDL,该文件将在Microsoft数据核心服务中打开
  • 设置提供商、服务器名和数据库,然后单击测试连接,然后单击
  • 右键单击该文件,这次选择使用记事本打开该文件
  • 您应该看到一个合适的OLEDB连接字符串,可以将其复制到VB代码中
  • 之后,您需要确保SELECT查询是正确的,方法是在SQLServerManagementServices或其他任何程序中运行它以查看结果


    一旦您在Excel中打开了一个记录集,您就可以使用range对象的CopyFromRecordset方法将记录集转储到Excel中

    您得到的错误是什么?好吧,如果您告诉我们什么不起作用,这将非常有帮助。您尚未指出问题所在。“这里有一些代码。怎么了?”没有很清楚地描述问题。你能回答你的问题并补充一些关于你的实际问题的信息吗?(这对将来试图找到类似问题答案的人很有用。)谢谢。@KenWhite:从查看它的情况来看,我猜SQL查询是错误的,连接字符串是错误的(没有数据库或服务器!)@user2563891:有关操作ADO连接的帮助,看一看,@Philip:你可以通过看来看,这并不会提高以后在搜索中的使用,在编辑问题之前给出答案会消除编辑的动机(特别是对于经常只发布一次、获得答案然后继续的新用户)。谢谢你的帮助Philip@用户2563891:如果我解决了你的问题,请单击我答案左侧投票计数器下的绿色复选标记,将其标记为答案。