• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Vraag over vba mailcode

Status
Niet open voor verdere reacties.

zwinmi

Gebruiker
Lid geworden
16 feb 2010
Berichten
98
Hallo Forum!

Ik gebruik onderstaande code om een tabblad te emailen. Dit lukt ook, maar is het mogelijk dat de ontvanger de gegevens wel kan kopieren en plakken naar ander excelbestand, maar dat de gegevens niet kunnen worden veranderd in het origineel wat ik email? En waar moet ik dat dan in de code zetten? Dit wil ik zodat het gemailde bestand niet verkneukeld wordt.

Code:
Sub MailUrenoverzicht()
If MsgBox("Weet je zeker dat het weekoverzicht correct is?", vbYesNo, "Mailcontrole") = vbNo Then Exit Sub
'Working in 2000-2010
    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

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

    Set Sourcewb = ActiveWorkbook

    'Copy the sheet to a new workbook
    ActiveSheet.Copy
    Set Destwb = ActiveWorkbook

    'Determine the Excel version and file extension/format
    With Destwb
        If Val(Application.Version) < 12 Then
            'You use Excel 2000-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            'You use Excel 2007-2010, we exit the sub when your answer is
            'NO in the security dialog that you only see  when you copy
            'an sheet from a xlsm file with macro's disabled.
            If Sourcewb.Name = .Name Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                End With
                MsgBox "Your answer is NO in the security dialog"
                Exit Sub
            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 If
    End With

    '    'Change all cells in the worksheet to values if you want
    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False

    'Save the new workbook/Mail it/Delete it
    TempFilePath = Environ$("temp") & "\"
    TempFileName = "TZ BV Urenoverzicht week " & [Uitzendbureaus!K5]

    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 = "naam@provider.nl"
            .CC = "naam@provider.nl"
            .BCC = ""
            .Subject = "Urenoverzicht week " & [Uitzendbureaus!K5]
            .Body = "blablabla"
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            .Send   'or use .Display
        End With
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    'Delete the file you have send
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub
 
Dat kan veel simpeler:
Code:
Sub MailUrenoverzicht()
  If MsgBox("Weet je zeker dat het weekoverzicht correct is?", vbYesNo, "Mailcontrole") = vbYes Then
    With Application
      .ScreenUpdating = False
      .EnableEvents = False
 
      ActiveSheet.Copy
      With ActiveWorkbook
        .sendmail "naam@provider.nl","Urenoverzicht week " & [Uitzendbureaus!K5]
        .close False
      End With

      .ScreenUpdating = True
      .EnableEvents = True
    End With
  End If
End Sub
De enige manier om te voorkomen dat anderen iets kunnen met het bestand dat je ze stuurt is het ze niet sturen.
Waarom zou je willen voorkomen dat de ontvanger iets met jouw bestand doet ?
 
Laatst bewerkt:
Hallo Forum!

maar is het mogelijk dat de ontvanger de gegevens wel kan kopieren en plakken naar ander excelbestand, maar dat de gegevens niet kunnen worden veranderd in het origineel wat ik email?

Als XPS bestand mailen , dit kunnen ze selecteren en in een sheet plakken ( met gepaste software kunnen ze ook het xps bestandje bewerken , maar ......... )
 
hallo truckertje, daar kan ik wat mee! het tabblad wordt gekopieerd en tijdelijk opgeslagen met de naam weekoverzicht week ? . waar in de code moet ik dan wijzigen dat het tijdelijke bestand wordt opgeslagen als xps??

bedankt voor de hulp!
 
Hoi Rudi,

bedankt voor je reactie, maar hier vind ik mijn antwoord geloof ik niet. Ik zou graag willen weten waar ik in de code iets moet aanpassen om het tijdelijke bestand op te slaan als .xps ipv xlm

Groet Mike
 
Even op de site van Wim ( WiGi ) een kijkje genomen en daar staat " (**) gebruik: ExportAsFixedFormat met Type = xlTypeXPS "
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan