ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3162|回复: 9

[求助] 关于用vba调用SQL的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-7-20 13:55 | 显示全部楼层 |阅读模式
1、如何用VBA代码将EXCEL的某张表导入SQL中?我看eh上帖子好多,为啥都不能用的呢...麻烦大虾能不能给个总结?
2、另外,调用SQL成功后,能不能一次执行多个语句啊?

TA的精华主题

TA的得分主题

发表于 2011-7-20 14:04 | 显示全部楼层
用SQL语句查询也可以实现
  1. Select StoreNumber,Balance
  2. From [Help$A3:J245]
  3. In "F:\门店会计工作规划\Store\分支\新建文件夹\20040南周口.xls" "Excel 8.0;"
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-20 14:37 | 显示全部楼层

回复 2楼 zhangjimfu 的帖子

嗯,谢谢,不过我是想通过vba来实现导入SQL,目的是弄个宏绑定到某个摁键上,点击就能够导入...有在vba里面实现的方法吗?

TA的精华主题

TA的得分主题

发表于 2011-7-20 16:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
简单一点的代码
  1. Sub UpdatingExcel(myPath As String)
  2.     On Error Resume Next
  3.     DoCmd.TransferSpreadsheet acImport, 8, "tblTempUpload", myPath, True, "Help!B3:j141"
  4.     DoCmd.TransferSpreadsheet acImport, 8, "tblTempUpload", myPath, True, "Help!k3:s105"
  5.     DoCmd.TransferSpreadsheet acImport, 8, "tblTempUpload", myPath, True, "Help!B142:j246"
  6. End Sub
复制代码
复杂一点的代码
  1. Sub UploadCF(mth As String, myPath As String)
  2.     Dim cnn, rst, sql$

  3.     Set cnn = CreateObject("ADODB.Connection")
  4.     Set rst = CreateObject("ADODB.Recordset")
  5.     sql = "Select * From[Help$o3:w105] Where Balance<>0"
  6.     DoCmd.SetWarnings False

  7.     cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & myPath
  8.     Set rst = cnn.Execute(sql)
  9.     While Not rst.EOF
  10.         sql = "Update tblCFValues Set " & mth & "=" & rst("Balance") & " Where StoreNumber='" & _
  11.                 rst("StoreNumber") & "' And AccountSubject='" & rst("AccountSubject") & _
  12.                 "' And ReportKind='" & rst("ReportKind") & "' And FinYear=" & rst("FinYear") & _
  13.                 " And StoreBrand='" & rst("StoreBrand") & "' And BudgetOrFact='" & rst("BudgetOrFact") & "'"
  14.         DoCmd.RunSQL sql
  15.         rst.MoveNext
  16.     Wend
  17.     cnn.Close
  18.    
  19.     Set cnn = Nothing
  20.     Set rst = Nothing
  21.     DoCmd.SetWarnings True
  22. End Sub
复制代码
如果要多个Excel文档批量导入只需再引用FileSystemObject

TA的精华主题

TA的得分主题

发表于 2011-7-20 19:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教 Help! 语句是啥意思,猜不出来

TA的精华主题

TA的得分主题

发表于 2011-7-20 22:01 | 显示全部楼层

回复 5楼 weizhuzhu 的帖子

Help是Excel文档中的工作表

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-21 10:38 | 显示全部楼层
你好,简单代码中acImport报错 未定义,指的是什么? 是不是要引用什么? Docmd这些命令都查不到

另外,复杂代码中 mth指的是什么?


原帖由 zhangjimfu 于 2011-7-20 16:26 发表
简单一点的代码Sub UpdatingExcel(myPath As String)
    On Error Resume Next
    DoCmd.TransferSpreadsheet acImport, 8, "tblTempUpload", myPath, True, "Help!B3:j141"
    DoCmd.TransferSpreadsheet acI ...

TA的精华主题

TA的得分主题

发表于 2011-7-21 12:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-7-21 12:40 | 显示全部楼层

回复 7楼 darwinruc 的帖子

mth指的是月份

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-21 13:22 | 显示全部楼层

回复 8楼 zhangjimfu 的帖子

嗯,我最后用的代码是这样的:
Sub Excel2SQL()
    Dim cn As ADODB.Connection
    Dim strSQL As String
    Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB; Data Source= CDQ-PC;Integrated Security=SSPI; Initial Catalog=TEST"

    strSQL = "SELECT * INTO NewPortfolioAllocation FROM " & _
            "OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', " & _
            "'Data source=E:\PortfolioAllocation.xls;" & _
            "Extended Properties=Excel 8.0')...[PortAlloc$]"

End Sub

然后遇到的问题是SQL Server里的ad hoc distributed queries未启用

在SQL中调用存储过程:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'ad hoc distributed queries',1
reconfigure
可实现对ad hoc distributed queries 功能的开启


想问下,你的代码是怎么输入在那个窗口里的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 20:22 , Processed in 0.040907 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表