IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

QlikView Discussion :

Envoyer rapport par mail (server Externe)


Sujet :

QlikView

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 39
    Points : 43
    Points
    43
    Par défaut Envoyer rapport par mail (server Externe)
    Bonjour,

    J’ai créé un module qui export un tableau en Excel et sauvegarde le fichier dans un folder spécific.
    J’ai créé un deuxième module permettant d’envoyer ce fichier par mail aux différentes personnes concernées.

    Le point noir est que je développe sur un server qui se trouve en externe et sur lequel n’est pas installé outlook.

    Pour tester cette fonction (mail) je lance le rapport via QV en local sur mon PC. Tout fonctionne parfaitement

    Pour passer en live, ce rapport est mis sur une page HTML (accesspoint) et de là cette fonction ne marche plus.

    Ci-dessous le code des modules.

    Export Tableau
    ---------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    Sub SendTS
     
        dim v_Employee
    dim v_Week
    dim v_Year
    dim v_Maintenant
     
    v_Employee = ActiveDocument.Variables("v_Employee").GetContent.String
    v_Year = ActiveDocument.Variables("v_Year").GetContent.String
    v_Week = ActiveDocument.Variables("v_Week").GetContent.String
    v_Maintenant = ActiveDocument.Variables("v_Maintenant").GetContent.String
     
    	 filePath = "J:\...\Oli files"&v_employee&"-"&v_Year&"-"&v_Week&"-"&v_Maintenant&".xlsx"
     
     
     
         Set excelFile = CreateObject("Excel.Application")
     
         excelFile.Visible = TRUE
     
     
     
         Set WorkBook = excelFile.WorkBooks.Add
     
            Set Sheet = WorkBook.WorkSheets(1)
     
     	 Set Sheet2 = WorkBook.WorkSheets(2)
     
     	 Set Sheet3 = WorkBook.WorkSheets(3)
     
     
         Set tableToExport = ActiveDocument.GetSheetObject("CH123")
     
         Set chartProperties = tableToExport.GetProperties
     
         tableToExport.CopyTableToClipboard true
     
     
         chartCaption = tableToExport.GetCaption.Name.v
     
     
         Sheet.Range("A1") = chartCaption
         Sheet.Range("A1:J1").Merge
     
     
         Sheet.Paste Sheet.Range("A2")
         Sheet.Range("A:A").ColumnWidth = 14
         Sheet.Range("E:E").ColumnWidth = 15.29
         Sheet.Range("F:H").ColumnWidth = 11
         Sheet.Range("I:I").ColumnWidth = 13
         Sheet.Range("J:K").ColumnWidth = 30
     
         Sheet.Range("A2:H1500").RowHeight = 15
     
    ''----------------------------------------------------------------------------------------------     
     
    '
         Set table2ToExport = ActiveDocument.GetSheetObject("CH131")
     
         Set chart2Properties = table2ToExport.GetProperties
     
         table2ToExport.CopyTableToClipboard true    
     
     
         chart2Caption = table2ToExport.GetCaption.Name.v
     
     
         Sheet2.Range("I10") = chart2Caption
         Sheet2.Range("I10:N10").Merge  
     
         Sheet2.Paste Sheet2.Range("I11")
         Sheet2.Range("I:N").ColumnWidth = 15
     
     
    set LockSheet = Sheet
     
            LockSheet.Protect(Password ="Olivier")
     
     
    set LockSheet = Sheet2
     
            LockSheet.Protect(Password ="Olivier")
     
    	 Sheet.Name = v_employee&"-"&v_Year&"-"&v_Week
    	 Sheet2.Name ="Overview"&v_employee&"-"&v_Year&"-"&v_Week
    	 Sheet3.Name ="Comments"
         excelFile.Visible = TRUE
     
     
         WorkBook.SaveAs  filepath
     
     
         WorkBook.Close
         excelFile.Quit
     
     
         Set WorkBook = nothing
     
         Set excelFile = nothing
     
    End Sub
    Envoie par mail
    ---------------
    v_Tech = adresse mail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Sub SendTSMail
     
     
     
    Dim MsO
    Dim ObjMail
     
    dim v_Employee
    dim v_Week
    dim v_Year
    dim v_Tech
     
    v_Employee = ActiveDocument.Variables("v_Employee").GetContent.String
    v_Year = ActiveDocument.Variables("v_Year").GetContent.String
    v_Week = ActiveDocument.Variables("v_Week").GetContent.String
    v_Maintenant = ActiveDocument.Variables("v_Maintenant").GetContent.String
    v_Tech = ActiveDocument.Variables("v_Tech").GetContent.String
     
     
    On Error Resume Next
    Set MsO = GetObject(, "Outlook.Application")
    If Err Then
        Err.Clear
        Set MsO = CreateObject("Outlook.Application")
    End If
     
    Set ObjMail = MsO.CreateItem(olMailItem)
    ObjMail.Subject = "TimeSheet"
     
    ObjMail.Recipients.Add ("v_Tech")
     
     
     
    On Error Resume Next
    Set MsO = GetObject(, "Outlook.Application")
    If Err Then
        Err.Clear
        Set MsO = CreateObject("Outlook.Application")
    End If
     
    Set ObjMail = MsO.CreateItem(olMailItem)
    ObjMail.Subject = "TimeSheet"
     
     
    ObjMail.Recipients.Add (v_Tech)
     
     
    ObjMail.Body = "" & vbCrLf
    ObjMail.Body = ObjMail.Body & "Beste collega’s" & vbCrLf
    ObjMail.Body = ObjMail.Body & ""& vbCrLf
    ObjMail.Body = ObjMail.Body & ""& vbCrLf
    ObjMail.Body = ObjMail.Body & "In bijlage vindt je overzicht van je uren van de afgelopen periode." & vbCrLf
    ObjMail.Body = ObjMail.Body & ""& vbCrLf
    ObjMail.Body = ObjMail.Body & "Indien hier zaken in staan die niet correct zijn stuur deze mail ,voorzien van commentaar, door naar je teamleider."& vbCrLf
    ObjMail.Body = ObjMail.Body & "Het is niet mogelijk om deze mail te beantwoorden."& vbCrLf
    ObjMail.Body = ObjMail.Body & ""& vbCrLf
    ObjMail.Body = ObjMail.Body & "Met vriendelijk groet,"& vbCrLf
    ObjMail.Body = ObjMail.Body & ""& vbCrLf
    ObjMail.Body = ObjMail.Body & "" & vbCrLf
     
     
    Dim MessageAttachment
     
    MessageAttachment = "J:\...\Oli files"&v_employee&"-"&v_Year&"-"&v_Week&"-"&v_Maintenant&".xlsx"
     
    ObjMail.Attachments.Add(MessageAttachment).Displayname = v_employee&"-"&v_Year&"-"&v_Week&"-"&v_Maintenant&".xlsx"
     
    ObjMail.Send
     
    Set ObjMail=Nothing
    Set MsO=Nothing
     
    end sub
    Pourriez-vous me dire quelle modification doit être apportée pour que cela fonctionne aussi bien niveau programmation et/ou server.
    Exemple est-ce qu’en installant outlook sur le serveur cela suffirait ?

    Merci

  2. #2
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 651
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 651
    Points : 2 531
    Points
    2 531
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Votre code dit "ouvre Outlook, crée un mail dans Outlook et envoie le".
    Forcément, sans Outlook, ça ne peut pas marcher.

    Installer Outlook est une solution.

    L'autre solution est de passer par les objets CDO pour envoyer les mails.

    Recherchez des exemples de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateObject("CDO.Message")
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateObject("CDO.Configuration")

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 39
    Points : 43
    Points
    43
    Par défaut
    Ok mais je pensais que le fait d'être sur une page HTML aurait ouvert l'Outlook du user et n'était plus au server externe. ==> erreur.

    Je vais approfondir les "createObject".

    Merci pour la piste

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 651
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 651
    Points : 2 531
    Points
    2 531
    Billets dans le blog
    6
    Par défaut
    Ha pardon, j'ai zappé la partie "l'application est lancée depuis l'access point".

    Par expérience, je sais qu'il ne faut pas trop compter sur tout ce qui est macro VB lorsqu'on utilise la version full-web de QlikView.
    Pour créer des instances de programme, il faut théoriquement accepter des messages de sécurité, chose qui n'est pas possible sur une page HTML.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 39
    Points : 43
    Points
    43
    Par défaut Eurêka
    Hello,

    Je reviens sur ce post.
    J'ai mis un peu de temps car j'attendais les infos sur l'IP du serveur et tester avant de poster.

    Alors tout d'abord merci pour la piste. La 'non installation de 'outlook' n'était pas le seul problème. L'IDuser de qv ou de l'OS était le client QV donc impossible d'envoyer via mail même une fois Outlook installé sur le serveur externe.

    Je suis donc passé par le 'create Object' comme PhunkyBob l'avait suggéré.

    J'ai deux variables dasn le module:
    1. l'adresse mail en fonction du technicien qui doit recevoir le mail (v_Tech). d'autres adresses peuvent être fixée sans soucis en plus de celle-là.
    2. l'ajout d'un text pour le corps du mail. Ce text est une variable définie par un inputBox dasn le report en lui même. (Dans mon cas je pars d'une liste de valeur prédéfinie.) ce texte peut être ajouté au text fixé par le code.

    J'ai également l'ajout d'un fichier attaché au mail. il suffit de donner le 'path' et le nom du fichier. (ici "C:\Users\ReiviloH\Desktop\1.xlsx" en bas du code)

    Voici donc le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    sub SENT_TS2
     
    Set objEmail = CreateObject("CDO.Message") 'Sending mail
     
    dim v_user
     
    v_user = ActiveDocument.Variables("v_Tech").GetContent.String
     
     
    'This section provides the configuration information for the remote SMTP server.
     
    config = "http://schemas.microsoft.com/cdo/configuration/"
     
    objEmail.Configuration.Fields.Item(config & "sendusing") = 2 'http://msdn.microsoft.com/en-us/library/exchange/ms873037%28v=exchg.65%29.aspx
     
    objEmail.Configuration.Fields.Item(config & "smtpserver") = "xx.xx.x.X" 'Name or IP of Remote SMTP Server
     
    'objEmail.Configuration.Fields.Item (config & "smtpauthenticate") = 1 'Clear Text - Type of authentication, NONE, Basic (Base64 encoded), NTLM
     
    'objEmail.Configuration.Fields.Item(config & "sendusername") = "youruserid" 'Your UserID on the SMTP server
     
    'objEmail.Configuration.Fields.Item(config & "sendpassword") = "yourpassword" 'Your password on the SMTP server
     
    objEmail.Configuration.Fields.Item(config & "smtpserverport") = 25 'Server port (typically 25)
     
    objEmail.Configuration.Fields.Item(config & "smtpusessl") = False 'Use SSL for the connection (False or True)
     
    objEmail.Configuration.Fields.Item(config & "smtpconnectiontimeout") = 60 'Connection Timeout in seconds (the maximum time CDO will try to establish a connection to the SMTP server)
     
    objEmail.Configuration.Fields.Update
     
    'End remote SMTP server configuration section                            
     
     
    ‘address mail from
    objEmail.From = "publisher_test@blabla.com"
    ‘receipt mailBox
    objEmail.To = v_user
    ‘Subject
    objEmail.Subject = "Test Mail"
     
    ‘Add text in the bodymail – here text from variable by an inputbox
     
    DIM v_text
     
    v_text = ActiveDocument.Variables("v_TEST").GetContent.string
     
    objEmail.TextBody = " Mail from QlikView Test Server "& v_text & "blablablabla"
     
    ‘add a file into the mail.
     
    objEmail.AddAttachment "C:\Users\ReiviloH\Desktop\1.xlsx"
     
     
    objEmail.Send
     
     
    Set objEmail = Nothing
     
    end sub

    Merci pour les indices et en espérant que ceci pourra être utile pour le forum.

    @ bientôt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer un rapport par mail
    Par Mozard Yao dans le forum Odoo (ex-OpenERP)
    Réponses: 13
    Dernier message: 29/11/2013, 21h44
  2. Syntaxe URL pour envoi de rapport par mail
    Par Sunchaser dans le forum Cognos
    Réponses: 4
    Dernier message: 28/07/2010, 09h25
  3. Envoi de rapport par mail
    Par patrice56 dans le forum Jasper
    Réponses: 2
    Dernier message: 05/11/2009, 22h48
  4. [8.1][Report] Envoi d'un rapport par mail
    Par smuller dans le forum Cognos
    Réponses: 2
    Dernier message: 07/01/2009, 10h01
  5. [Access 97] Envoyer Formulaire par mail
    Par 6ril25 dans le forum VBA Access
    Réponses: 14
    Dernier message: 18/10/2007, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo