2015-03-31 3 views
0

Я пытаюсь отправить электронное письмо, содержащее книгу Excel из документа, используя встроенные макросы VB. В одном из листов есть данные, которые имеют отношение к отправке электронной почты (тема, получатель и т. Д.). Я пытаюсь получить доступ к ним с помощью Sheets объекта как такПроблема с чтением данных из определенных ячеек в Excel VBA

Sub Button1_Click() 
    Dim OutApp As Object 
    Dim OutMail As Object 

    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 

    Dim cell As Object 
    Dim count As Integer 

    count = 0 
    For Each cell In Selection 
     count = count + 1 
    Next cell 
    If count <> 1 Then 
     MsgBox ("You must select exactly one cell, which shall be the e-mail address of the recipient") 
     Wscript.Quit 
    Else 
     recipient = ActiveCell.Value 
    End If 

    On Error Resume Next 
    With OutMail 
     .To = recipient 
     .CC = "" 
     .BCC = "" 
     .SentOnBehalfOfName = This.Sheets("MailContent").Range("A2").Value 
     .Subject = This.Sheets("MailContent").Range("A4").Value 
     .Body = This.Sheets("MailContent").Range("A6").Value & vbNewLine & This.Sheets("MailContent").Range("A7") & vbNewLine & vbNewLine & "Næste gang senest den " + This.Sheets("MailContent").Range("A10") & vbNewLine & vbNewLine & This.Sheets("MailContent").Range("A8") 
     .Attachments.Add ActiveWorkbook.Name 
     .Display 
    End With 
    On Error GoTo 0 

    Set OutMail = Nothing 
    Set OutApp = Nothing 
End Sub 

Я также был в состоянии повторить ту же ошибку с этой небольшой фрагмент кода

Sub Button1_Click() 
    Dim subjectCell As Range 
    subjectCell = This.Sheets("MailContent").Range("A2") 
    MsgBox (subjectCell.Value) 
End Sub 

Я попытался с помощью листов, листы, ActiveWorkbook для доступа к ячейкам, но я уверен, что это просто проблема того, как я назначаю данные, поскольку я не привык к языкам с синтаксисом типа VB. Любая помощь очень ценится, и если вам нужна дополнительная информация, оставьте мне комментарий.

ответ

0

Для назначения диапазону необходимо использовать ключевое слово «Установить».

Set subjectCell = ThisWorkbook.Sheets("MailContent").Range("A2") 

Это все еще вызывает раздражающе регулярную основу.

+0

Я полагаю, что это также должно быть 'ThisWorkbook', а не' This' всюду в коде. – BrakNicku

+0

Я предполагал, что «Это» было переменной рабочей книги. Тем не менее, замена этой книги также будет работать. –

+0

@ user3964075 Лучше всего будет 'Dim ThisWb as Workbook', за которым следует' Set ThisWb = Thisworkbook', а затем используйте 'ThisWB', где бы вы ни использовали' this'. IMHO – FreeMan

Смежные вопросы