选择每个excel工作表时,如何确定时间戳

选择每个excel工作表时,如何确定时间戳,excel,vba,Excel,Vba,到目前为止,我编写的代码采用用户名、计算机名和当前日期时间,并将其写入SQL表。我想做的是在选择不同的工作表时捕获,以及与每个工作表关联的时间戳 Sub UpdateTable() Dim cnn As ADODB.Connection Dim uSQL As String Dim strText As String Dim strDate As Date Dim strUsername As String Dim strComputerName As Variant strUsername

到目前为止,我编写的代码采用用户名、计算机名和当前日期时间,并将其写入SQL表。我想做的是在选择不同的工作表时捕获,以及与每个工作表关联的时间戳

Sub UpdateTable()

Dim cnn As ADODB.Connection
Dim uSQL As String
Dim strText As String
Dim strDate As Date
Dim strUsername As String
Dim strComputerName As Variant

strUsername = Environ("username")
strComputerName = Environ("Computername")
strDate = Now

Set cnn = New Connection
cnnstr = "Provider=SQLOLEDB; " & _
        "Data Source=icl-analive; " & _
        "Initial Catalog=DW_ALL;" & _
        "User ID=dw_all_readonlyuser;" & _
        "Trusted_Connection=Yes;"

cnn.Open cnnstr

uSQL = "INSERT INTO Audit (UN,CN,DT) VALUES ('" & strUsername & "','" &  strComputerName & "','" & strDate & "');" ''

Debug.Print uSQL

cnn.Execute uSQL
cnn.Close
Set cnn = Nothing
Exit Sub
End Sub

我不太确定我是否过度简化了这一点,但根据我的理解:

UpdateTable()
sub添加到模块中。将
工作表\u Activate()
事件添加到要运行的每个工作表
UpdateTable()

选择工作表后,将运行
UpdateTable()
sub,将用户名、计算机名和时间戳添加到数据库中。可能值得添加工作表名称(如果您希望在多个工作表中运行此名称)


因此,当选择工作表时,您可以将
应用程序.ActiveSheet.Name
和任何其他值(时间戳、用户等)添加到数据库。

您需要在该子表中运行相同的sql插入,还是在另一个表中使用该数据创建不同的记录?sql插入都将放在一个表中。我知道,我的意思是,如果每次用户单击另一张工作表时都需要运行相同的代码,是否有方法将此代码添加到当前打开的工作表插入到SQL表的现有代码中?
Application.ActiveSheet.Name
返回当前活动工作表的名称。您可以在数据库中为工作表名称添加一个字段,并在运行子
UpdateTable()
时添加该字段;插入
Application.ActiveSheet.Name
我不太确定同行评审是如何工作的,但是,我编辑了您的问题以显示上述示例。每次运行代码时,活动工作表都会与用户名、计算机名和时间戳一起插入到数据库中。