Emaillijst (+150) vanuit excelblad verwerken in VBA

Status
Niet open voor verdere reacties.

LdG13

Gebruiker
Lid geworden
28 feb 2016
Berichten
20
Ik heb uit jullie forum een bestaande vba gekopieerd (22 mrt 2015; Cel selectie mailen als nieuwe excel bestand) om een gedeelte van een excel blad te kopiëren naar de mail en het vervolgens te mailen.
Hier onder zie je een voorbeeld van de macro zoals die nu is.
Echter de aantal karakters die ik na .To = "..."; kan invoeren is niet toereikend. ( zijn wel 150 adressen!) Ik zie dat er wel een mogelijkheid bestaat om vanuit een excelblad een hele lijst toe te voegen met

Use a cell containing an email-address

.SendMail ThisWorkbook.Sheets("mysheet").Range("A1").Value, _
"This is the Subject line"

Ik ga ervan uit dat men de Range kan aanpassen naar A1:A175 ? ik krijg deze alleen niet verwerkt in de macro die ik al heb. (zie hier beneden) Ik ben een leek in hierin, dus wellicht dat mij iemand kan helpen??
Alvast bedankt.


Code:
Sub email_verzenden_met_celselectie_als_bijlage_TEST()
'



1 Dim lngAntwoord As Long
2 lngAntwoord = MsgBox("Wil je een e-mail sturen met als bijlage een Exelbestand" + vbCr + "met daarin een door jou gemaakte celselectie?" + vbCr + vbCr + "Klik op Ja om de celselectie te maken die je wilt e-mailen." + vbCr + vbCr + "De volgende personen zullen deze mail ontvangen:" + vbCr + vbCr + " Test persoon 1" + vbCr + " Test persoon 2" + vbCr + " Test persoon 3" + vbCr + " Test persoon 4" + vbCr + " Test persoon 5", vbQuestion + vbYesNo + vbDefaultButton2, "Celselectie e-mailen als bijlage")
If lngAntwoord = vbYes Then
GoTo 3
Else
GoTo Error_handler:
End If

3 Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
5 xTitleId = "Selecteer de cellen die je wilt mailen"
On Error GoTo Error_handler:
Set WorkRng = Application.Selection
8 Set WorkRng = Application.InputBox("Celbereik selecteren", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, " dd-mmm-yyyy h uur mm")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "test@mail.nl" 'Typ hier een geldig e-mail adres
.CC = ""
.BCC = ""
.Subject = "Onderwerpnaam van de mail"
.Body = "Bij deze een update met de laatste wijzigingen in het test Excelbestand. (zie bijlage)"
.Attachments.Add Wb2.FullName
.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
 
Je code is zo niet te lezen zonder code tags en juiste inspringpunten.
 
Graag codetags gebruiken zoals in onderstaand mogelijkheid.
Het is niet te lezen en je benut gelijk een heel pagina.

Code:
[COLOR=#333333].BCC = join(application.transpose([/COLOR][COLOR=#3E3E3E]ThisWorkbook.Sheets("mysheet").Range("A1:a175")),";")[/COLOR]

Edit: @edmoor was me al voor.
 
Laatst bewerkt:
..OK..., mijn excuses...Ben er niet zo handig in..
Bedankt voor de snelle reactie...ik ga het snel uitproberen. Is voor het werk, dus kan even duren. Dan horen jullie nog van mijn.
 
..even een tussenreactie; ik een gedeelte uitgeprobeerd, m.a.w. de hele reeks (A1:A175) heb ik nog niet gebruikt, omdat het bestand wat ik moet versturen, naar al die adressen in de reeks, nog verder aangepast moet worden.
Ik heb het wel om de proberen, 2 e-mail adressen in een reeks van A1:A5 geselecteerd en dat werkt in elk geval.
Dus zover alvast bedankt en als ik het volledig ga testen laat ik opnieuw een reactie achter.
 
Hallo, hierbij wil ik jullie nog even laten weten dat de gegeven oplossing werkt (maar dat wisten jullie natuurlijk al ;-) ).
De regels van A1 tot 175 gevuld t/m regel 140 en alles is verstuurd. Nogmaals bedankt.
 
Dat wisten we natuurlijk al, maar uiteraard graag gedaan en bedankt voor je reactie. :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan