
大家好,这是Excel小火箭的第2次分享,如有不当的地方,请批评指教。
对于某乎天天推送的Python处理Excel和VBA比较,讲真,需求各有不同,本人还是推荐VBA多一点,毕竟不用买课,而且VBA基于Excel,无需安装直接运行,绿色环保,对于100万行以内的数据,处理起来还是很顺畅滴。
最近本大侠写了一个记录日志的自定义函数,思路是先查找指定路径下是否存在日志文件,若不存在,则新建;打开配置文件,写入操作日志,关闭文件,保存。
通常后台打开Excel读取数据,我们都采用 set wb=getObejct("文件路径") 的方式,但是写入数据保存后会遇到问题,重新保存的Excel无法再正常打开。
Option Explicit
Sub btn_WriLogs()
Dim wb As Workbook
Dim strUserId As String, strDate As String
Dim strTempfiles As String, strlogs As String
Dim i As Integer, c
Application.ScreenUpdating = False
strUserId = Environ("UserName")
strDate = Format(Date, "YYYY/MM/DD")
strTempfiles = "D:\XXX\02_学习资料\001 VBA\2023-09-28 后台打开sht\" & "Tempfils_" & strUserId & ".xlsx"
If FileExists(strTempfiles) = False Then
Application.SheetsInNewWorkbook = 1 '定义只生成含一个工作表的表格
Set wb = Workbooks.Add
With ActiveWorkbook
.SaveAs strTempfiles
With Worksheets(1)
.Range("A1:C1").Value = Array("UserId", "Actions", "Date")
.Range("A1:C1").Interior.ColorIndex = 36
End With
.Close True
End With
Set wb = Nothing
End If
strlogs = "变量可写入"
Rem 此处若用 Set wb = GetObject(strTempfiles) 写入内容保存后,将无法正常打开工作簿
Rem 所以若仅仅是后台读取可以采用这种方式//写入不行
Rem 写入只能用 Set wb = Workbooks.Open(strTempfiles) 这种方式
Set wb = Workbooks.Open(strTempfiles)
With wb
With .Worksheets(1)
i = .Range("A65536").End(xlUp).Row + 1
.Range("A" & i) = strUserId
.Range("b" & i) = strlogs
.Range("C" & i) = strDate
End With
.Close True
End With
Set wb = Nothing
Rem 读取示例
Set wb = GetObject(strTempfiles)
With wb.Worksheets(1)
Debug.Print .Range("a1").Value
Debug.Print .Range("a2").Value
Debug.Print .Range("a3").Value
End With
wb.Close
Set wb = Nothing
Application.ScreenUpdating = True
End Sub
客官都读到这儿了
记得点赞加关注哦