ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教如何用SQL把新资料加入*.xls内?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-2 17:04 | 显示全部楼层 |阅读模式
本帖最后由 newsoft1 于 2018-6-2 17:46 编辑

我是直接拿資料庫來改的...
報錯為:當物件關閉時,不允許操作
紅色為錯誤起點.
請高手指點迷津
感謝


Sub 更新資料庫()
  Dim myCon As ADODB.Connection
  Dim myRS As ADODB.Recordset
  Dim nRow As Long
  Dim nRow_2 As Long
  Dim i As Long
  Dim k As Long
  Dim j As Long
  
  nRow = Worksheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To nRow
   
  Set myCon = New ADODB.Connection
  myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.Path & "\" & Sheet2.Cells(i, "A") & " (日線).xls"
        
  Set myRS = New ADODB.Recordset
'  With myRS
'    .LockType = adLockPessimistic
'    .Source = "價量資料"
'    .ActiveConnection = myCon
'    .Open
'  End With
  With Worksheets("Temp")
    nRow_2 = .Cells(Rows.Count, "A").End(xlUp).Row
    myCon.BeginTrans
    k = 0
    For j = 2 To nRow_2
    '由第一檔股票的位置到最後一檔,搜尋出代號有四碼數字者(普通股)
'      If IsNumeric(Worksheets("Sheet1").Cells(i, "A")) = True And Len(Worksheets("Sheet1").Cells(i, "A")) = 4 Then
        '將資料寫入資料庫
        myRS.AddNew
        myRS![Date] = .Cells(j, 1)
        myRS![Open] = .Cells(j, 2)
        myRS![High] = .Cells(j, 3)
        myRS![Low] = .Cells(j, 4)
        myRS![Close] = .Cells(j, 5)
        myRS![Volume] = .Cells(j, 6)
        myRS![Adj Close] = .Cells(j, 7)
        myRS.Update
        k = k + 1
'      End If
      '以每100筆為批次寫入資料庫
      If k Mod 100 = 0 Then
        myCon.CommitTrans
        myCon.BeginTrans
      End If
    Next j
    myCon.CommitTrans
  End With
  Application.StatusBar = Worksheets("Sheet1").Cells(i, "A") & " 价量资料写入完成!"
  myRS.Close
  Set myRS = Nothing
  myCon.Close
  Set myCon = Nothing

  Next i
  
End Sub

TA的精华主题

TA的得分主题

发表于 2018-6-2 18:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你把打开数据集的那段代码注释了

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 20:48 | 显示全部楼层
ftgli 发表于 2018-6-2 18:49
你把打开数据集的那段代码注释了

With myRS
    .LockType = adLockPessimistic
    .Source = "价量资料"
    .ActiveConnection = myCon
    .Open
End With

我是从*.xls 存到入 ACCESS资料库拿来修改的.
所以我才把上面那段注议,拿掉测试会卡在红色区.
蓝色字是本来ACCESS就有建立的资料库.
要改成建档在*.xls应该用不到才对.
是否应该用SQL语法 INSERT 来建入*.xls ?
还请指点感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 21:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ftgli 发表于 2018-6-2 18:49
你把打开数据集的那段代码注释了

With myRS
    .LockType = adLockPessimistic
    .Source = "价量资料"
    .ActiveConnection = myCon
    .Open
  End With

我是从*.xls 存到入 ACCESS资料库拿来修改的.
所以我才把上面那段注议,拿掉测试会卡在红色区.
蓝色字是本来ACCESS就有建立的资料库.
要改成建档在*.xls应该用不到才对.
是否应该用SQL语法 INSERT 来建入*.xls ?
还请指点感谢!

TA的精华主题

TA的得分主题

发表于 2018-6-5 04:09 来自手机 | 显示全部楼层
哇,还有使用繁体字的,厉害

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-6 01:26 | 显示全部楼层
201228 发表于 2018-6-5 04:09
哇,还有使用繁体字的,厉害

台湾呀!
香港/台湾/海外很多都用繁体字.

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-17 09:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我使用老方法解决了,但希望高手提供sql加入*.xls的方法

1.将*.xls sql全部资料到Sheet内.
2.把要新增的资料放到Sheet的最后1笔下方.
3.另存*.xls,把旧的*.xls覆盖.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 03:53 , Processed in 0.033901 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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