ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何用vba查询另一个工作簿的内容后对内容进行修改,修改的内容更新到原先的工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-6-20 23:05 | 显示全部楼层 |阅读模式
本帖最后由 603974 于 2019-6-20 23:32 编辑

如何用vba查询另一个工作簿的内容后对内容进行修改,修改的内容更新到原先的工作表

具体就是在gongcheng这个工作簿中将ku这个工作簿中的工作表Sheet1当成一个数据库,然后可以从Sheet1中查询到数据,接着在gongcheng的工作表中进行修改后可以把修改内容更新到工作簿ku的Sheet1工作表中

现在参考其他帖子和一些书已经可以实现查询了,但是更新功能还没有实现,希望各位老师不吝赐教。

ps1:附件中有一些内容我是有参考VB书籍,所以会有些多余的定义

ps2:更新的这个过程不能指定返回的行与列,因为我是想用excel做一个小型的数据库和数据管理系统,后续将会添加查询的条件,所以查到的数据可能只有数据库中的一部分,并且gongcheng中修改的数据是无法得知在数据库中原先的位置的,需要代码来实现(这也是我学习了很久也无法解决的一个难题)

ps3:还是关于更新的过程,我曾经想过无论从数据库中查到多少数据,查到的数据有没进行修改,只要触发了点击“更新”这个按键,就将全部查到的数据按指定位置复制进去,或者复制在数据库末尾,只将原数据删除的做法,但是这些做法还是要知道数据在数据库的原位置,如果各位老师有更专业的做法,希望能多多指点


感谢各位老师和大神看完小弟这么多的文字,小弟初来乍到,先谢谢各位老师和大神的帮助


新建文件夹.zip

23.83 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2019-6-21 07:16 来自手机 | 显示全部楼层
如果是数据库,可以看看sql语句,update是更新记录。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 11:20 | 显示全部楼层
老师,我自己写了个语句,但是老是报update语法不对的错误

Private Sub CommandButton2_Click()
Dim k As Integer
Dim R As Range
Dim d As Integer
Dim s, u, j As Integer
j = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 14).End(xlUp).Row '自己用了多少行


Set cnn = New ADODB.Connection
cnnstr = "Provider=microsoft.jet.oledb.4.0;" & "extended properties=excel 8.0;" & "data source=F:\ku\ku.xls;"
cnn.ConnectionString = cnnstr
cnn.Open cnnstr
mysheet = "Sheet1"
s = j
For d = 1 To s
sql = "update Sheet1 Set 停电设备=" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 2) & " ," _
& "set 风险等级=" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 3) & "" _
  & " where ID=" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 14) & ""
Set rs = New ADODB.Recordset
Set rs = cnn.Execute(sql)
cnn.Close
Set rs = Nothing
Set cnn = Nothing
j = j - 1
Next d
End Sub

我添加了监视后,监视值为sql="update Sheet1 Set 停电设备=110kV贡攀线线路 ,set 风险等级=七级电网事件 where ID=4",实在是看不出来语法哪里错了,能帮忙看一下吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-22 11:23 | 显示全部楼层
本帖最后由 603974 于 2019-6-22 11:41 编辑
zpy2 发表于 2019-6-21 07:16
如果是数据库,可以看看sql语句,update是更新记录。

老师,我自己写了段程序,但是老是报update语法不对的错误

Private Sub CommandButton2_Click()
Dim k As Integer
Dim R As Range
Dim d As Integer
Dim s, u, j As Integer
j = ThisWorkbook.Worksheets("Sheet1").Cells(Rows.Count, 14).End(xlUp).Row '自己用了多少行
Set cnn = New ADODB.Connection
cnnstr = "Provider=microsoft.jet.oledb.4.0;" & "extended properties=excel 8.0;" & "data source=F:\ku\ku.xls;"
cnn.ConnectionString = cnnstr
cnn.Open cnnstr
mysheet = "Sheet1"
s = j
For d = 1 To s
sql = "update [" & mysheet & "$] Set 停电设备='" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 2) & "' ," _
& "Set 风险等级='" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 3) & "'" _
  & " where ID=" & ThisWorkbook.Worksheets("Sheet1").Cells(j, 14) & ""
Set rs = New ADODB.Recordset
Set rs = cnn.Execute(sql)
cnn.Close
Set rs = Nothing
Set cnn = Nothing
j = j - 1
Next d
End Sub
我添加了监视后,监视值为sql="update [Sheet1$] Set 停电设备='110kV贡攀线线路' ,Set 风险等级='3级电网事件' where ID=4",实在是看不出来语法哪里错了,能帮忙看一下吗?

TA的精华主题

TA的得分主题

发表于 2019-6-22 11:31 来自手机 | 显示全部楼层
603974 发表于 2019-6-22 11:23
老师,我自己写了段程序,但是老是报update语法不对的错误

Private Sub CommandButton2_Click()

论坛的搜索一下打不开,看看下面的sql语句
[url=https://www.runoob.com/ado/ado-update.html]https://www.runoob.com/ado/ado-update.html[url]
你二句set用逗号分割,Ado不支持

TA的精华主题

TA的得分主题

发表于 2019-6-22 11:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
新人路过,来看看,学习学习的...

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-6-23 19:38 | 显示全部楼层
zpy2 发表于 2019-6-22 11:31
论坛的搜索一下打不开,看看下面的sql语句
https://www.runoob.com/ado/ado-update.html
你二句set用逗 ...

谢谢老师指导,问题成功解决了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-15 21:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 603974 于 2019-7-15 21:31 编辑
zpy2 发表于 2019-6-22 11:31
论坛的搜索一下打不开,看看下面的sql语句
https://www.runoob.com/ado/ado-update.html
你二句set用逗 ...

老师,时隔这么长再次来打扰,我现在想用VBA来查询和写入另一个工作簿的版本号请问要怎么实现,查询了一下网站和其他资料,只有实现查询和写入正在操作工作簿版本号的方法,我自己按照自己的理解和网站上给的启发也写了一段程序:
Private Sub CommandButton8_Click()
Dim cnnstr As String

Dim xlExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
cnnstr = "F:\ku\ku.xls"

Set xlBook = GetObject(cnnstr) '取得ku这个文件
xlBook.BuiltinDocumentProperties("Document version") = "测试"
MsgBox xlBook.BuiltinDocumentProperties("Document version")
End Sub
但是并不能实现,希望老师能不吝赐教C:\Users\ASUS\Desktop\捕获.jpg
另:老师上次的网站对我帮助很大,非常谢谢
捕获.JPG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-24 03:30 , Processed in 0.048974 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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