ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] EXCEL文件指定单元格的值写入ACCESS文件(已存在的记录更新,新记录追加)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-20 18:59 | 显示全部楼层 |阅读模式
说明:
EXCEL文件有关单元格的值写入到ACCESS文件uTemp表,代码已写,也能写入数据
但是有两个问题需解决
1、数据不能重复写入,“纳税人识别号”、“纳税年度”两字段相同的覆盖原来的值,并提示是否覆盖?
2、新的数据直接追加就可以了(“纳税人识别号”、“纳税年度”两字段作为是否为新记录判断标准)
详见附件

写入.zip

29.32 KB, 下载次数: 197

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-20 19:00 | 显示全部楼层
Sub adoTest()
   Dim adoRt  As Object
   Dim strSQL  As String
   
   '// 创建ADO记录集对象
   Set adoRt = CreateObject("ADODB.RecordSet")
   '// 设置SQL 语句
   strSQL = "SELECT * FROM uTemp WHERE False"
   
   With adoRt
      '// 设置需要连接数据库
      .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\写入\写入EXCEL指定单元格值.mdb"
      .CursorLocation = 3
      .CursorType = 1
      .LockType = 3
      
      '// 设置SQL语句
      .Source = strSQL
      '// 准备打开记录集
      .Open
      
      '// 新增记录
      .AddNew
      '// 赋值
      .Fields("纳税人识别号").Value = Range("识别号")
      .Fields("单位名称").Value = Range("单位名称")
      .Fields("纳税年度").Value = Range("纳税年度")
      .Fields("利润总额").Value = Range("利润总额")
      .Fields("纳税调整增加").Value = Range("纳税调整增加")
      .Fields("纳税调整减少").Value = Range("纳税调整减少")
      .Fields("调整后所得").Value = Range("调整后所得")
      '// 更新
      .Update
      
      '// 判断并关闭记录
      If .State = 1 Then
         .Close
      End If
   End With
   
   '// 从内存中释放
   Set adoRt = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2012-6-20 21:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 添加记录()
  2.     Dim cnn As Object, rs As Object, SQL$
  3.     Set cnn = CreateObject("adodb.connection")
  4.     Set rs = CreateObject("adodb.recordset")
  5.     cnn.Open "provider=microsoft.jet.oledb.4.0;data source=" & ThisWorkbook.Path & "" & "写入EXCEL指定单元格值.mdb" '连接数据库
  6.     SQL = "select * from uTemp where 纳税人识别号='" & Range("识别号") & "' and 纳税年度='" & Range("纳税年度") & "'"
  7.     rs.Open SQL, cnn, 1, 3
  8.     With rs
  9.         If .RecordCount = 0 Then .AddNew
  10.         .Fields("纳税人识别号").Value = Range("识别号")
  11.         .Fields("单位名称").Value = Range("单位名称")
  12.         .Fields("纳税年度").Value = Range("纳税年度")
  13.         .Fields("利润总额").Value = Range("利润总额")
  14.         .Fields("纳税调整增加").Value = Range("纳税调整增加")
  15.         .Fields("纳税调整减少").Value = Range("纳税调整减少")
  16.         .Fields("调整后所得").Value = Range("调整后所得")
  17.         .Update
  18.     End With
  19.     rs.Close
  20.     cnn.Close
  21.     Set rs = Nothing
  22.     Set cnn = Nothing
  23. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-6-20 21:35 | 显示全部楼层
请看附件
写入.rar (23.34 KB, 下载次数: 540)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-20 22:02 | 显示全部楼层
zhaogang1960 发表于 2012-6-20 21:34

   rs.Open SQL, cnn, 1, 3

"1"、“3”分别代表什么?
1 :uTemp表第一个字段纳税人识别号?

TA的精华主题

TA的得分主题

发表于 2012-6-20 22:08 | 显示全部楼层
本帖最后由 zhaogang1960 于 2012-6-20 22:09 编辑
cxd1001 发表于 2012-6-20 22:02
rs.Open SQL, cnn, 1, 3

"1"、“3”分别代表什么?


rs.Open SQL, cnn, 1, 3
创建查询,完整写法:
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
要求
引用Microsoft ActiveX Data Objects 2.x Library
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
第一个参数是游标类型,第二个参数是锁定类型

1、3分别是它们的值

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-20 22:08 | 显示全部楼层
zhaogang1960 发表于 2012-6-20 21:35
请看附件

搞定!{:soso_e179:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-20 22:09 | 显示全部楼层
zhaogang1960 发表于 2012-6-20 22:08
rs.Open SQL, cnn, 1, 3
创建查询,完整写法:
rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic

明白了!{:soso_e182:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-21 09:01 | 显示全部楼层
zhaogang1960 发表于 2012-6-20 21:35
请看附件

再请教一个问题:数据区域取数(附件里有详细说明)
1、把B2:C15区域非空值写入ACCESS纳税调整表对应字段(项目、金额)
2、B2:C15区域类别字段取值为“调增”并写入ACCESS纳税调整表对应字段(类别)
3、把B16:C21区域非空值写入ACCESS纳税调整表对应字段(项目、金额)
4、B2:C15区域类别字段取值为“调减”并写入ACCESS纳税调整表对应字段(类别)
5、把纳税人识别号、纳税年度写入ACCESS纳税调整表对应字段(纳税人识别号、纳税年度),单元格名称为识别号、纳税年度(见sheet1)
6、数据不能重复写入,“纳税人识别号”、“纳税年度”两字段相同的覆盖原来的值
7、新的数据直接追加就可以了(“纳税人识别号”、“纳税年度”两字段作为是否为新记录判断标准)


写入.zip

32.06 KB, 下载次数: 58

TA的精华主题

TA的得分主题

发表于 2012-6-21 10:35 | 显示全部楼层
cxd1001 发表于 2012-6-21 09:01
再请教一个问题:数据区域取数(附件里有详细说明)
1、把B2:C15区域非空值写入ACCESS纳税调整表对应字段 ...

不知所云
建议工作表和Access都使用相同格式的表格,ADO可以直接导入数据
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 22:38 , Processed in 0.043627 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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