我目前有一个生成客户语句的excel文件。我需要跟踪谁发表了他们的陈述。 目前,每当生成语句时,我都会有一个宏,它会向我发送一封包含其用户名的电子邮件。但是,在瘦客户端系统上运行的人会收到提示;
'程序正在尝试代表您发送电子邮件...'
在某种程度上我可以摆脱这个提示并仍然发送电子邮件,或者有任何人对如何跟踪使用情况有任何其他想法。我通过Share Point共享该文件。那可能有一些功能吗?
谢谢
答案 0 :(得分:2)
如果您的网络上有一个每个人都有权访问的位置,您可以编写一个日志文件。很可能是Sharepoint服务器上的一个点。
从目前发送电子邮件的代码中调用此类内容。
在VBA IDE中,转到工具菜单并选择参考。选择“Microsoft脚本运行时”
Private Sub LogUsage()
Dim ts As TextStream
Dim fs As FileSystemObject
Dim strLogFile As String
strLogFile = "\\servername\sharename\log\Usage.txt"
'Check if the file exists, if it does, open it, if it doesn't create it
Set fs = New FileSystemObject
If fs.FileExists(strLogFile) = True Then
Set ts = fs.OpenTextFile(strLogFile, ForAppending)
Else
Set ts = fs.CreateTextFile(strLogFile, True, False)
End If
'Log your entry
ts.WriteLine "Used by " & Environ$("Username") & " at " & Now & " on computer " & Environ$("Computername")
'Clean up
ts.Close: Set ts = Nothing
Set fs = Nothing
End Sub
答案 1 :(得分:1)
我在网络共享上使用共享数据库,如SQL Server或Access,而不是电子邮件。与单独的电子邮件相比,它更容易使用。
如果必须使用电子邮件,则可以在Excel宏中使用CDO对象,但您的用户必须能够访问网络上的SMTP服务器(通常,Exchange服务器可以为此工作;请查看Outlook设置和看看它连接的服务器)。通常,如果每个人都可以访问相同的LAN资源,这不是问题。
在VBA编辑器中将引用添加到Microsoft CDO for Windows 2000 Library(工具 - > VBA中的引用。不要担心“Windows 2000”;它应该在您的系统上可用。)
示例代码
Dim iMsg As CDO.Message
Dim iConf As CDO.Configuration
Dim Flds As ADODB.Fields
Set iMsg = New CDO.Message
Set iConf = New CDO.Configuration
Set Flds = iConf.Fields
With Flds
.Item(cdoSendUsingMethod) = cdoSendUsingPort
'Put the address of your SMTP server here
.Item(cdoSMTPServer) = "smtp.example.com"
.Item(cdoSMTPConnectionTimeout) = 10
.Item(cdoSMTPAuthenticate) = cdoBasic
.Item(cdoSendUserName) = "Username To Authenticate SMTP Server With"
.Item(cdoSendPassword) = "Password To Authenticate SMTP Server With"
.Item(cdoURLGetLatestVersion) = True
.Update
End With
With iMsg
Set .Configuration = iConf
.From = "from@example.com"
.ReplyTo = "replyto@example.com"
.MimeFormatted = False
.AutoGenerateTextBody = False
.To = "to@example.com"
.CC = "cc@example.com"
.BCC = "bcc@example.com"
.Subject = "Subject of Email"
.HTMLBody = "<body>HTML text to send</body>"
'If you need to add attachments
.AddAttachment "C:\Local\Path\To\Attachment.xlsx"
.Send
End With