希望你一切都好。我有一个VBA代码来生成一封电子邮件,并在Outlook上附加Excel工作簿。工作正常。该按钮是在1标签,我想确保当收件人打开工作簿,它的另一个特定的标签。即生成电子邮件的按钮在选项卡1上,用户将打开选项卡2。因为有多个标签,我不能只发送标签2单独。有人能告诉我,是否有一个简单的解决方案吗?谢谢你的好意
我的代码:
Sub Rectangle1_Click()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Dim signature As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.display
End With
signature = xOutMail.body
xMailBody = "" & vbNewLine & vbNewLine & _
"" & vbNewLine & _
""
On Error Resume Next
With xOutMail
.To = Range("T2")
.CC = Range("U2")
.BCC = ""
.Importance = 2
.Subject = Range("V2")
.body = xMailBody & signature
.Attachments.Add ActiveWorkbook.FullName
.display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
字符串
2条答案
按热度按时间q1qsirdb1#
这段代码将创建单词本的临时副本,并激活所需的标签,例如(sheet2),生成带有附件的电子邮件,然后在电子邮件编写完成后,从临时副本存储原始工作簿
字符串
oprakyz72#
可以通过使用Workbook_Open事件激活希望用户在打开工作簿时首先看到的工作表来实现此目的。每次打开工作簿时都会触发此事件。
您需要将此代码放在VBA编辑器的
ThisWorkbook
模块中。以下是您可以如何做到这一点:1.按
Alt + F11
打开VBA编辑器。1.在左侧的Project Explorer中,找到您的工作簿并双击
ThisWorkbook
。1.粘贴以下代码:
字符串
将
"Sheet2"
替换为希望在工作簿打开时处于活动状态的工作表的名称。请注意,这是工作簿的全局设置。每次打开工作簿时,无论它是如何打开的,此代码都将运行并激活指定的工作表。
您的电子邮件发送代码可以保持不变。当收件人打开工作簿时,由于Workbook_Open事件,它将自动导航到指定的选项卡。
建议的VBA代码应放在VBA编辑器中的
ThisWorkbook
对象内。此对象包含与工作簿本身相关的事件,例如打开、关闭工作簿或激活或停用工作簿的时间。在本例中,我们使用
Workbook_Open
事件。顾名思义,只要打开工作簿,就会触发此事件。此事件中的代码将自动运行。当工作簿打开时,Sheets("Sheet2").Activate
行将使“Sheet2”成为活动工作表。以下是在工作簿中添加
Workbook_Open
事件的步骤:1.在Excel中按
Alt + F11
打开VBA编辑器。1.在编辑器左侧的项目资源管理器中,找到您的工作簿。如果项目资源管理器不可见,您可以通过按
Ctrl + R
来显示它。1.双击工作簿名称下的
ThisWorkbook
。这将打开与工作簿相关的新代码窗口。1.在新的代码窗口中,从左侧下拉菜单中选择“Workbook”,并从窗口顶部的右侧下拉菜单中选择“Open”。
1.这将自动创建一个
Workbook_Open
事件。在此事件中,写入Sheets("Sheet2").Activate
。将“Sheet2”替换为希望在工作簿打开时处于活动状态的工作表的名称。1.关闭VBA编辑器。
下面是修改后的VBA代码:
型
使用此修改后的代码,当您运行
Rectangle1_Click
子例程时,它将以附件的形式发送带有工作簿的电子邮件。当收件人打开工作簿时,由于Workbook_Open
事件,它将自动导航到指定的工作表。