Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Hoe start ik vanuit VB Outlook

CDirk
10 antwoorden
  • Ik heb een VB-programma (VB6) waarin je Outlook moet kunnen starten. Als Outlook gestart wordt, moet meteen een nieuwe E-mail gemaakt worden waarin de geadresseerden en het onderwerp al zijn ingevuld, zodat de gebruiker alleen nog maar de tekst hoeft te typen. Kan dit in VB6. Ik weet dat er in VB7 een object Process is waarmee dit soort dingen geregeld kunnen worden, maar hoe dat in VB6 zit weet ik niet. Ik heb het al geprobeerd via het commando "Shell [i:7d5d767c9b]padnaamprogrammanaam[/i:7d5d767c9b]" en dan met mogelijke schakelopties, maar daar kom ik ook niet mee verder.
  • Hoi Bigfoot,

    Dit is de code die ik gebruik:

    [code:1:903bf81165]' Usage Example

    ' CALL SendEmail("Email address", "Subject")

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

    Private Const SW_SHOWNORMAL = 1

    'Public
    Sub SendEmail(ByVal E_Mail_Address As String, Optional ByVal SSubject As String)
    Dim lSuccess As Long
    lSuccess = ShellExecute(0&, vbNullString, "mailto:" & E_Mail_Address & "?subject=" & _
    SSubject & App.Title, vbNullString, "C:", SW_SHOWNORMAL)
    If lSuccess <= 32 Then
    ' If 32 or less is returned then an error has
    ' occured.
    MsgBox "Error sending mail. Make sure that you have your email client correctly installed and configured", vbCritical
    End If
    End Sub[/code:1:903bf81165]

    En om een e-mail adres te sjekken gebruik ik deze code:
    [code:1:903bf81165]

    Public Function IsEMailAddress(ByVal sEmail As String, _
    Optional ByRef sReason As String) As Boolean

    Dim sPreffix As String
    Dim sSuffix As String
    Dim sMiddle As String
    Dim nCharacter As Integer
    Dim sBuffer As String

    sEmail = Trim(sEmail)

    If Len(sEmail) < 8 Then
    IsEMailAddress = False
    sReason = "Too short"
    Exit Function
    End If


    If InStr(sEmail, "@") = 0 Then
    IsEMailAddress = False
    sReason = "Missing the @"
    Exit Function
    End If


    If InStr(InStr(sEmail, "@") + 1, sEmail, "@") <> 0 Then
    IsEMailAddress = False
    sReason = "Too many @"
    Exit Function
    End If


    If InStr(sEmail, ".") = 0 Then
    IsEMailAddress = False
    sReason = "Missing the period"
    Exit Function
    End If

    If InStr(sEmail, "@") = 1 Or InStr(sEmail, "@") = Len(sEmail) Or _
    InStr(sEmail, ".") = 1 Or InStr(sEmail, ".") = Len(sEmail) Then
    IsEMailAddress = False
    sReason = "Invalid format"
    Exit Function

    End If
    [/code:1:903bf81165]

    Hoop dat het net zo goed voor jou werkt als voor mij….
  • Dus toch de Win32 API-functies. En ik dacht dat ik te moeilijk dacht. Heb er een jaar of drie geleden in Delphi nog mee gewerkt, maar die kennis was dus aardig weggezakt. :smile: Thanx.
  • Ik was net op zoek naar een dergelijk voorbeeld. Maar bestaat ook de mogelijkheid om reeds vanuit de code tekst te plaatsen in het bericht, of het plakken van het klembord!
    Nu kan ik reeds een nieuw bericht openen met e-mail adres en onderwerp, maar zou graag het plakken van de inhoud uitschakelen, zodat het bericht nog enkel hoeft verstuurd te worden.
  • Ik heb ff snel gezocht om een body toe te voegen, maar ik heb nog nix gevonden.

    Ik heb wel evt wat met Automation…….

    [code:1:68c666b80b]Dim Out As Object ' Create object variable

    ' Assign Outlook.Application to object variable
    Set Out = CreateObject("Outlook.Application")

    With Out.CreateItem(olMailItem) ' Using the outlook object
    ' Insert recipients one at a time with the Add method
    .Recipients.Add "abcd@xxx.com" ' To: Field
    ' To place users in the CC: field, specify olCC type
    .Recipients.Add("blabla@debla.com").Type = olCC
    .Subject = "Tester de test test" ' Message subject
    .Body = Text1.Text ' Copy message from Text1
    ' Insert attachments one at a time with the Add method
    .Attachment.Add "c:blabla.exe"
    ' Finally copy message to Outlook outbox with send
    .Send
    End With[/code:1:68c666b80b]

    Misschien heb je er wat aan…..
  • Oeps wat vergeten maar misschien weet je dit al.

    Om dit werkend te krijgen moet je wel nog ff het volgende doen:

    Project -> References -> Microsoft Outlook x.0 Object Library
  • Ik ben misschien wat onduidelijk geweest, maar dit zou ik moeten kunnen vanuit VBA(excell), kun je daar dan ook die libary toevoegen? Bij verwijzingen heb ik alvast deze libary niet gevonden.
  • Ik weet niet of dit werkt (Ik gebruik geen VBA), maar volgens mij kan je de Library zo toevoegen:

    Extra -> Verwijzingen -> Microsoft Outlook x.0 Object Library (x = versie nummer)

    Bij mij staat hij er gewoon tussen. Maar misschien komt dat omdat ik ook VB heb… Dat weet ik niet
  • Inderdaad, dat werkt nu. Maar hoe kan ik nu ipv tekst naar outlook te sturen, een stuk van een excell werkblad meesturen.
    Met knippen en plakken lukt dit wel, dus automatisch zou dit ook wel moeten kunnen, maar hoe?
  • Je wil dus een stukje van de sheet melen en niet de hele werkmap…..

    Volgens mij kan je gewoon de file als attachement melen, maar een stukje………

    Ik heb wel wat automation source voor excel maar niet om stukjes te selecteren en te melen……

    Als ik wat tijd over heb zal ik het ff uitzoeken…..

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.