ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 不打开Excel文件而写入记录并保存(已实现一半的功能,还剩另一半)求助求助!!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-10-9 21:36 | 显示全部楼层 |阅读模式
本帖最后由 tonygz83 于 2013-10-12 21:16 编辑

想做一个这样的功能:
(1)当打开一个excel文件(如附件中的“文件A.xlsm”)时,获取进行操作的用户名、计算机名以及打开文件时的系统时间;
(2)将获取到的用户名、计算机名以及打开文件时的系统时间等信息写入另一个路径下的另一个excel(如附件中的文件“记录.xlsx”)并保存,且要求在不打开“记录.xlsx”的情况下写入数据。

附件中已实现了(1)的功能,但不知(2)的功能该如何实现?

求各位高手帮帮忙解决~~~先谢谢了

不打开Excel文件而写入记录并保存.rar

20.83 KB, 下载次数: 61

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-12 20:49 | 显示全部楼层
自己先顶一下

TA的精华主题

TA的得分主题

发表于 2013-10-12 22:15 | 显示全部楼层
第一个问题你解决了,第二个问题实际上是做不到的。就好比大门紧锁你能如入无人之境。论坛上有相关“不打开文件对文件进行存取”的例子,据我看法,这些例子只不过是换了一种打开方式,没让在表面看到而已。如不信,你可以对那些所谓的不打开文件存取的文件加上密码,看看还能不能进行存取。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-10-12 22:26 | 显示全部楼层
请测试:
  1. Sub 插入记录()
  2. '引用Microsoft ActiveX Data Objects 2.x Library
  3.     Dim cnn As New ADODB.Connection
  4.     Dim SQL As String
  5.     cnn.Open "provider=microsoft.Ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.Path & "\记录\记录.xlsx"
  6.     SQL = "insert into [Sheet1$] select * from [Excel 12.0;Database=" & ActiveWorkbook.FullName & "].[Sheet1$" & Range("a1").CurrentRegion.Address(0, 0) & "]"
  7.     cnn.Execute SQL
  8.     cnn.Close
  9.     Set cnn = Nothing
  10. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-10-12 22:28 | 显示全部楼层
如果要在Workbook_Open事件中实现,可把代码写入该事件,也可以在事件中调用
Call 插入记录
请看附件
不打开Excel文件而写入记录并保存.rar (21.35 KB, 下载次数: 146)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-12 22:36 | 显示全部楼层
maditate 发表于 2013-10-12 22:15
第一个问题你解决了,第二个问题实际上是做不到的。就好比大门紧锁你能如入无人之境。论坛上有相关“不打开 ...

谢谢~说得对,其实只是在后台打开而已

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-12 22:49 | 显示全部楼层
本帖最后由 tonygz83 于 2013-10-12 22:53 编辑
zhaogang1960 发表于 2013-10-12 22:26
请测试:


赵老师您好!谢谢您的帮助!
您的代码其实是将被打开文件(文件A.xlsm)的内容,通过SQL语句写入到另一个文件(即“记录.xlsx”)中。假如A.xlsm是一空白文件(且不允许在A.xlsm中写入数据),那怎样才能将A.xlsm被打开时的用户名、计算机名和文件打开时的时间等记录写入“记录.xlsx”中呢?

TA的精华主题

TA的得分主题

发表于 2013-10-12 23:04 | 显示全部楼层
tonygz83 发表于 2013-10-12 22:49
赵老师您好!谢谢您的帮助!
您的代码其实是将被打开文件(文件A.xlsm)的内容,通过SQL语句写入到另一 ...

请测试:
  1. Sub 插入记录()
  2. '引用Microsoft ActiveX Data Objects 2.x Library
  3.     Dim cnn As New ADODB.Connection
  4.     Dim SQL As String
  5.     cnn.Open "provider=microsoft.Ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.Path & "\记录\记录.xlsx"
  6.     SQL = "insert into [Sheet1$] (用户名,计算机名,文件打开时间) values ('Administrator','CHINA-20130802G',#2013-10-12 22:20#)"
  7.     cnn.Execute SQL
  8.     cnn.Close
  9.     Set cnn = Nothing
  10. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2013-10-13 02:04 | 显示全部楼层
tonygz83 发表于 2013-10-13 00:25
报错:用户定义类型未定义。何解呢??

使用了前期绑定,需要引用Microsoft ActiveX Data Objects 2.x Library
来一个后期绑定,不需要引用:
  1. Private Sub Workbook_Open()
  2.     Dim cnn As Object
  3.     Dim SQL As String
  4.     Set cnn = CreateObject("ADODB.Connection")
  5.     cnn.Open "provider=microsoft.Ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.Path & "\记录\记录.xlsx"
  6.     SQL = "insert into [Sheet1$] (用户名,计算机名,文件打开时间) values ('" & Environ("username") & "','" & Environ("ComputerName") & "',#" & Now & "#)"
  7.     cnn.Execute SQL
  8.     cnn.Close
  9.     Set cnn = Nothing
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-10-12 23:31 | 显示全部楼层
zhaogang1960 发表于 2013-10-12 23:04
请测试:

        不好意思,我自己表达不清楚。。。
        其实我的本意,是将附件中“文件A.xlsm”和文件夹《记录》中的“记录.xlsx”均放在局域网上共享,可供局域网内若干台计算机查看。其中“文件A.xlsm”是只读的(不允许写入数据和保存),“记录.xlsx”则是可读写及可保存的。现在想将曾经点击打开过“文件A.xlsm”的电脑的用户名、计算机名和文件打开时间等信息记录在“记录.xlsx”中。
        我已经知道了怎样获取“打开文件A.xlsm时的电脑的用户名、计算机名和文件打开时间等信息”的方法,但不知道怎样把这些信息写入“记录.xlsx”这个文件中。。。   
        再次麻烦老师出手相助!!

不打开Excel文件而写入记录并保存.rar

20.63 KB, 下载次数: 35

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 18:20 , Processed in 0.046400 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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