我创建了一个宏,它将新的CommandText发送到Excel电子表格中的ODBC连接,然后刷新与查询关联的结果表.这一直很好,但我注意到每次运行宏时它会覆盖一些默认值的连接字符串,这些默认值在我的机器上运行但不能在其他用户的机器上运行,因为它们没有保存的连接文件我有.指定服务器地址的更具体的连接字符串在手动输入时有效,但在运行宏时会被覆盖.
我想我会在发送新的CommandText的同时让宏写入连接字符串,但是我遇到了错误.
我的代码如下:
Sub NewData()
Dim lStr As String
lStr = ""
lStr = lStr & " USE myDBname; "
lStr = lStr & " WITH X AS ("
lStr = lStr & " SELECT"
lStr = lStr & " column1, column2, column3, etc"
lStr = lStr & " FROM"
lStr = lStr & " etc. etc. etc."
With ActiveWorkbook.Connections("PayoffQuery").ODBCConnection
.CommandText = lStr
.Connection = "SERVER=myserveraddress;UID=SYSTEM;Trusted_Connection=Yes;APP=2007 Microsoft Office system;WSID=SYSTEM;DATABASE=myDBname;"
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
.CommandText仍然可以正常更新,但.Connection会引发运行时错误1004:应用程序定义或对象定义的错误.
知道我在这里做错了吗?TIA.
我创建了一个宏,该宏打开了一个Outlook电子邮件模板,供用户发送(从电子表格中提取了一些其他信息)。除了Outlook根据用户设置自动添加签名之外,其他所有操作都进行得很好。尽管我可以很容易地关闭自己的签名,但我并不是唯一可能运行此宏的人。
电子邮件模板中已经包含公司签名,因此也不想添加个人签名。
Google提供了很多有关将签名传递到VBA生成的电子邮件的建议,但是我找不到任何可以将其删除的签名。有任何想法吗?
现有代码:
... snip ...
Set otlApp = CreateObject("Outlook.Application")
Set otlNewMail = otlApp.CreateItemFromTemplate("\\Path\To\MyFile.oft")
With otlNewMail
.Bcc = vEmailsFromSpreadsheet '(set earlier on)
.Display
End With
'otlApp.Quit
Set otlNewMail = Nothing
Set otlApp = Nothing
Set otlAttach = Nothing
Set otlMess = Nothing
Set otlNSpace = Nothing
Run Code Online (Sandbox Code Playgroud)