bepaalde tab bladen versturen in VBA

Status
Niet open voor verdere reacties.

NPersijn

Gebruiker
Lid geworden
27 jul 2018
Berichten
56
Hallo,

Hoe kan ik bepaalde tab bladen in een excel file selecteren en versturen naar meerdere email adressen.
Daarbij ben ik ook op zoek dat in de bestandsnaam de info van een cel komt waar een weeknummer staat.

Bekijk bijlage 328615

Gr. Norman
 
Ik heb nuttige informatie kunnen vinden.
Ik loop tegen het volgende probleem aan.
De geselecteerde sheets worden verstuurd.
Echter hoe kan ik ze versturen zonder macro's?
Wanneer je nu op een cel drukt komt er direct een foutmelding.
De ontvanger van de mail hoeft ook alleen de inhoud van de cellen te zien.
Ik heb de volgende macro gebruikt.

Code:
Sub Mail_Sheets_Array()

    
Call Uitsorteren
    
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object
    Dim sh As Worksheet
    Dim TheActiveWindow As Window
    Dim TempWindow As Window

    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    
    With Sourcewb
        Set TheActiveWindow = ActiveWindow
        Set TempWindow = .NewWindow
        .Sheets(Array("rooster", "Export TT")).Copy
    End With

    
    TempWindow.Close

    Set Destwb = ActiveWorkbook

    
    With Destwb
        If Val(Application.Version) < 12 Then
            
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            '
            Select Case Sourcewb.FileFormat
            Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
            Case 52:
                If .HasVBProject Then
                    FileExtStr = ".xlsm": FileFormatNum = 52
                Else
                    FileExtStr = ".xlsx": FileFormatNum = 51
                End If
            Case 56: FileExtStr = ".xls": FileFormatNum = 56
            Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
            End Select
        End If
    End With

    
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss")

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

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
        On Error Resume Next
        With OutMail
            .to = "norman.persijn@hoogesteger.nl"
            .CC = ""
            .BCC = ""
            .Subject = "Rooster"
            .Body = "Hoi"
            .Attachments.Add Destwb.FullName
            '
            .Send
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End With

    
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub


Vast bedankt voor de reactie
 
Laatst bewerkt:
Het kan allemaal wel wat eenvoudiger.

Code:
Sub VenA()
  Application.DisplayAlerts = False
  c00 = Environ$("temp") & "\Part of " & ActiveWorkbook.Name & Format(Now, " dd-mmm-yy h-mm-ss") & ".xlsx"
  Sheets(Array("rooster", "Export TT")).Copy
  ActiveWorkbook.SaveAs c00, 51
  ActiveWorkbook.Close 0
  
  With CreateObject("Outlook.Application").CreateItem(0)
    .to = "np@mail.nl"
    .Subject = "Rooster"
    .Body = "Hoi"
    .Attachments.Add c00
    .display '.Send
  End With
  Kill c00
End Sub
 
Het kan allemaal wel wat eenvoudiger.

Code:
Sub VenA()
 
    .to = "np@mail.nl"
    .Subject = "Rooster"
    .Body = "Hoi"
    
End Sub

Oke, bedankt,
Hoe kan ik de macro de mailadressen, subject en body uit een tab blad halen?
 
Bijvoorbeeld zo:
Code:
Sub VenA()
    .to = Range("A1")
    .Subject = Range("A2")
    .Body = Range("A3")
End Sub
 
Het mag toch onderhand wel duidelijk zijn dat het quoten niet nodig is en dat je in bestanden geen persoonlijke gegevens zet. Mij lijkt het jouw echte mailadres te zijn en ook dat de medewerkers uit de regio Zwanenburg komen. Maar goed. Zorg voor structuur in jouw gegevens.

Code:
Sub VenA()
  ar = Sheets("mail").Cells(1).CurrentRegion
  Application.DisplayAlerts = False
  c00 = Environ$("temp") & "\Part of " & ActiveWorkbook.Name & Format(Now, " dd-mmm-yy h-mm-ss") & ".xlsx"
  Sheets(Array("rooster", "Export TT")).Copy
  ActiveWorkbook.SaveAs c00, 51
  ActiveWorkbook.Close 0
  
  For j = 1 To UBound(ar)
    Select Case LCase(ar(j, 1))
      Case "aan": c01 = c01 & "," & ar(j, 2)
      Case "cc": c02 = c02 & "," & ar(j, 2)
    End Select
    If ar(j, 3) <> "" Then c03 = c03 & ar(j, 3) & vbCrLf
  Next j
  
  With CreateObject("Outlook.Application").CreateItem(0)
    .to = Mid(c01, 2)
    .cc = Mid(c02, 2)
    .Subject = "Rooster"
    .Body = c03
    .Attachments.Add c00
    .display '.Send
  End With
  Kill c00
End Sub
 

Bijlagen

  • Rooster V&E testje.xlsm
    197,7 KB · Weergaven: 28
Bedankt
Vergeten te vragen. Wat moet ik ervoor zetten als het email adres op een bepaald blad staat?
En als het file in de CC naar meerdere adressen moet, deze staan verschillende cellen onder elkaar op een bepaald blad.
Vast bedankt
 
Hallo

@VenA
De medewerkers had ik vervangen voor nummers.
Idd mijn email adres vergeten. Bedankt voor de tip
Je macro werkt overigens geweldig, bedankt

Bedankt voor de reacties, Het is gelukt.
 
Laatst bewerkt:
Ik heb de macro die VenA heeft gemaakt aangepast.
Voordat de macro mag draaien wordt eerst een blad gekopieerd en gesorteerd.
Tot zover loopt het allemaal goed.
de volgende stap is om de validatie optie uit te schakelen op de bladen die verstuurd worden.
Ook dit gaat goed, alleen de validatie terug zetten op het origineel lukt me niet.
Hier krijg ik een fout melding op.

Code:
Sub Validatie_terug()
'
' Validatie_terug Macro
'

'
    ActiveCell.SpecialCells(xlCellTypeSameValidation).Select
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=VERSCHUIVING($BR$1;0;0;AANTALARG($BR$1:$BR$300)+1;1)"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    Range("C9:D9").Select
End Sub

Wat doe ik hier fout?
Vast bedankt

Gr Norman
 
Als je zegt een foutmelding te krijgen vertel er dan ook bij welke dat is.
 
Hoi,

Hier krijg ik de foutmelding op.


Code:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=VERSCHUIVING($BR$1;0;0;AANTALARG($BR$1:$BR$300)+1;1)"

Engels, dat zal het zijn, bedankt
 
In plaats van het iedere keer verwijderen van een validatielijst en daarna weer toevoegen (wie heeft dat ooit bedacht ???) kun je hem ook gewoon even aanpassen met 1 regel code m.b.v .Modify
 
Ook jouw toetsenbord bevat de funktietoets F1
 
Bijv.

Code:
Sub M_snb()
    Cells(1).Validation.Add 3, , , "=" & Columns(6).SpecialCells(2).Address(, , , -1)
    Cells(1).Validation.Modify , , , "=" & Columns(8).SpecialCells(2).Address(, , , -1)
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan