代码已更新,以引用以下更改.
这个日志系统为Excel创建了一个名为Log.txt的外部文档,它将在log.txt文件中创建一个如下所示的行:
11:27:20 AM Matthew Ridge从ss改为N $ 55
这不会告诉您是否有人在工作表中输入了新的代码行,但如果代码需要答案,它将告诉您答案所在的单元格.下面的代码适用于Mac和PC系统的组合.如果人们发现它没有请说.
这段代码是在这里的人和其他形式的帮助下创建的,所以我不能单独拥有该文件,但我可以拥有这个概念.所以感谢那些帮助过的人,没有这个,我认为现在不会有一个可行的Excel日志系统;)
顺便说一下,在有人吓坏了并询问这段代码在哪里之前,对于普通/新的最终用户来说这并不明显.您需要转到Developer选项卡打开它,单击Visual Basic,当新窗口打开时,查找Microsoft Excel Object; 在该文件夹下应该是您的工作簿.您可以将其放在ThisWorkbook下或任何工作表内,方法是双击您希望代码所在的工作表.
在右侧面板上打开工作表后,您将看到Option Explicit,如果不这样做,最好通过确保选中Require Variable Declaration来激活它.这可以再次在Visual Basic窗口中找到,并遵循以下路径:
工具 - > 选项 - > 编辑器.
如果它被检查,那么你不用担心,如果没有,那么你检查它.Option Explicit对你的代码来说是一件好事,它迫使你声明变量,这是一个好的做法.
验证完成后,您可以复制下面的代码,将其粘贴到工作簿中,或根据您的需要粘贴到特定的工作表中.
Option Explicit
Dim PreviousValue
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sLogFileName As String, nFileNum As Long, sLogMessage As String
sLogFileName = ThisWorkbook.Path & Application.PathSeparator & "Log.txt"
On Error Resume Next ' Turn on error handling
If Target.Value <> PreviousValue Then
' Check if …
Run Code Online (Sandbox Code Playgroud) 我想用以下代码创建一个目录和一个子目录:
Public fso As Scripting.FileSystemObject
Set fso = New Scripting.FileSystemObject
fso.CreateFolder ("C:\Users\<my_username>\DataEntry\logs")
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建嵌套目录.在这种情况下,该DataEntry
目录将不存在,所以基本上我想创建2个目录,DataEntry\logs
下C:\Users\<username>
如果我输入命令提示符,我可以创建该目录而mkdir
没有任何问题.但是,我根本无法让VBA创建该文件夹,我得到:
Run-time error '76':
Path not found
Run Code Online (Sandbox Code Playgroud)
我使用的是Excel VBA 2007/2010
我有几个电子表格,其中的数据从左到右组织,我想从中创建文件夹。每条记录都是完整的,没有空格,除非那是行的末尾,所以我正在寻找以下内容:
Col1 Col2 Col3
------ ------ ------
Car Toyota Camry
Car Toyota Corolla
Truck Toyota Tacoma
Car Toyota Yaris
Car Ford Focus
Car Ford Fusion
Truck Ford F150
Car
Toyota
Camry
Corolla
Yaris
Ford
Focus
Fusion
Truck
Toyota
Tacoma
Ford
F-150
...
Run Code Online (Sandbox Code Playgroud)
唯一需要注意的是,我有大约 15 列,有些条目在第 3 或 4 列结束,因此只需要创建那些文件夹。
任何人都可以帮助处理这个请求吗?我对编程并不陌生,但我对 VBA 还是很陌生。
谢谢!
我正在更新问题以显示我已经拥有的内容,然后从这里添加行...
Function CleanName(strName As String) As String
'will clean part # name so it can be made into valid folder name
'may need to add more lines to get rid of other characters
CleanName = Replace(strName, "/", "")
CleanName = Replace(CleanName, "*", "")
CleanName = Replace(CleanName, ".", "")
CleanName = Replace(strName, "\", "")
End Function
Run Code Online (Sandbox Code Playgroud)