Vba 如何从特定excel工作表中选择数据
我需要从excel工作表调用“sheet1”的单元格中选择数据 但是,当我导航到excel文档上的其他工作表时,只要说我从VBA developer页面运行宏,它就会从我所在的工作表中获取数据,而不是“sheet1” 这是我的密码Vba 如何从特定excel工作表中选择数据,vba,excel,outlook,Vba,Excel,Outlook,我需要从excel工作表调用“sheet1”的单元格中选择数据 但是,当我导航到excel文档上的其他工作表时,只要说我从VBA developer页面运行宏,它就会从我所在的工作表中获取数据,而不是“sheet1” 这是我的密码 Sub CreateMail() Dim objOutlook As Object Dim objMail As Object Dim rngTo As Range Dim rngBody As Range Set objO
Sub CreateMail()
Dim objOutlook As Object
Dim objMail As Object
Dim rngTo As Range
Dim rngBody As Range
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With ActiveSheet
Set rngBody = .Range(.Range("B5"), .Range("D5").End(xlDown))
End With
rngBody.Copy
With objMail
.To = "xxxx"
.Subject = "Project Update - " & Range("D2") & " on " & Format(Now(), "dd/mm/yyyy")
.display
End With
SendKeys "^({v})", True
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
有人能解释为什么当我在“sheet1”中时,它只从“sheet1”中获取单元格值。您在代码中引用的是
ActiveSheet
,这意味着它将引用这一行excel中打开的工作表:
With ActiveSheet
您需要通过将其更改为以下内容来引用要从中获取数据的工作表:
With Sheets("Sheet1")
因此,在您的代码中:
Sub CreateMail()
Dim objOutlook As Object
Dim objMail As Object
Dim rngTo As Range
Dim rngBody As Range
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With Sheets("Sheet1")
Set rngBody = .Range(.Range("B5"), .Range("D5").End(xlDown))
End With
rngBody.Copy
With objMail
.To = "xxxx"
.Subject = "Project Update - " & Sheets("Sheet1").Range("D2") & " on " & Format(Now(), "dd/mm/yyyy")
.display
End With
SendKeys "^({v})", True
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
可能重复的