Vba 如何从特定excel工作表中选择数据

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

我需要从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 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
可能重复的