2016-11-16 27 views
-1

我迄今爲止編寫的代碼使用用戶名,計算機名和當前日期時間,並將其寫入SQL表。我想要做的是在選擇不同的工作表時以及與每個工作表關聯的時間戳時捕獲。如何確定每個Excel表單被選中時的時間戳

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 
+0

您是否需要在該子文件夾中運行相同的sql插入,或者在另一個表中創建與該數據不同的記錄? – jsanchezs

+0

SQL插入全部移到一個表中。 – Chris

+0

我知道,我的意思是,如果你需要運行這個相同的代碼,每次用戶點擊另一張表 – jsanchezs

回答

0

我也不太清楚,如果我這個過於簡單化,但是從我的理解:

UpdateTable()子添加到一個模塊。將Worksheet_Activate()事件添加到您要運行的每個工作表中UpdateTable()

當工作表被選中時,UpdateTable()子將會運行,這會將用戶名,計算機名和時間戳添加到你的數據庫中。這可能是值得添加工作表名稱(如果您希望跨多個工作表運行此)

因此,當工作表被選中時,您可以將Application.ActiveSheet.Name和任何其他值(時間戳,用戶等)添加到數據庫。

+0

有沒有辦法將這添加到我現有的代碼中當前工作表打開插入到我的SQL表? – Chris

+0

'Application.ActiveSheet.Name'返回當前**活動**工作表的名稱。你可以添加一個字段到你的數據庫中的工作表名稱以及你的子'UpdateTable()'何時運行;插入'Application.ActiveSheet.Name' – Nulled

+0

我不太確定同行評審是如何工作的,但是,我編輯了你的問題來展示上面的一個例子。每次運行代碼時,活動工作表都會與用戶名,計算機名稱和時間戳一起插入到數據庫中。 – Nulled

相關問題