Via scheduled task run.bat openen en excel laten mailen

Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.180
Beste,

Ik probeer op de server2012 een task te maken van een .bat file die dan het script.vsb aanstuurt om een excel bestand te openen die dan zijn macro draait.
Nu moet die macro een deel van blad2 mailen, en daar gaat het mis.
Als ik handmatig de run.bat start dan gaat het goed, maar via de task loopt het niet.
Hieronder de scripts die ik gebruik en het excel bestand die de mail moet verzenden.

Ik hoop dat ik op de juiste forum gedeelte zit die mij hiermee kan helpen.


run.bat
Code:
cscript script.vbs "P:\automatisering\Scripts\Excel Batch script\Registratie-Documenten\Registratie-Documenten.xlsm"

script.vsb
Code:
Dim args, objExcel

Set args = WScript.Arguments
Set objExcel = CreateObject ("Excel.Application")

objExcel.Workbooks.open args(0)
objExcel.Visible = true

objExcel.Run "hsv"

objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit

En dan hier het Excel bestand wat geopend wordt en de mail moet sturen.

Bekijk bijlage Registratie-Documenten.xlsm

Het gebeurd allemaal onder administrator rechten!
Groet HWV
 
Is de scheduled task zo ingericht dat deze ook mag lopen als de gebruiker niet is ingelogd?
Dat kan meerdere oorzaken hebben.
Kijk bijvoorbeeld eens of deze mappen bestaan, zoniet, maak ze dan aan:
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
 
map aangemaakt maar nog niet

Edmoor,

Er bestond 1 map niet die heb ik aangemaakt.

C:\Windows\System32\config\systemprofile\Desktop

Het is zo ingesteld dat ook al de gebruiker niet is ingericht dat de taak mag lopen.
Wat ik wel zie is dat als ik deze handmatig laat runnen, dat deze in running blijf staan.
Ik weet niet of dit hoort

Maar helaas heeft dit nog niet mogen helpen.

Groet Henk
 
Al uitgeschakeld

Edmoor,

Ik heb dit al in het register laten opnemen dat dit wordt uitgeschakeld, dus daar kan het niet aan liggen.
Het vreemde is dat het handmatig wel goed gaat zonder problemen, maar met de task runt hij niet.
Ik begrijp dat het moeilijk beoordelen is als je niet ziet hoe en wat er gebeurd op onze server,

Anders moet ik kijken naar een andere oplossing.

Groet Henk
 
Ik kan er denk ik wel goed over oordelen omdat ik het probleem zelf ook af en toe tegen kom en ook die register instelling voorkomt niet altijd die vraag.
Als geen enkele geboden oplossing werkt gebruik ik niet meer Outlook maar verstuur de mail dan via CDO, dan heb je er geen last meer van.
 
Bedankt,

Ik heb al een beetje gekeken voor het verzenden via CDO, maar de eerste test deed niks.
Was de code van Ron de bruin.
Code:
Sub CDO_Mail_Small_Text()
    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    Dim Flds As Variant

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    '    iConf.Load -1    ' CDO Source Defaults
    '    Set Flds = iConf.Fields
    '    With Flds
    '        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    '        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "Fill in your SMTP server here"
    '        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    '        .Update
    '    End With

    strbody = "Hi there" & vbNewLine & vbNewLine & _
        "This is line 1" & vbNewLine & _
        "This is line 2" & vbNewLine & _
        "This is line 3" & vbNewLine & _
        "This is line 4"

    With iMsg
        Set .Configuration = iConf
        .To = "ron@debruin.nl"
        .CC = ""
        .BCC = ""
        .From = """Ron"" <ron@something.nl>"
        .Subject = "Important message"
        .TextBody = strbody
        .Send
    End With

    Set iMsg = Nothing
    Set iConf = Nothing
    Set Flds = Nothing
End Sub

Moet ik me echt in gaan verdiepen, want nog nooit mee gewerkt.

Groet Henk
 
Als je een eigen SMTP server gebruikt dan bestaat de kans dat het IP adres van de server waar vandaan je de mail stuurt moet worden toegevoegd aan een lijst met IP adressen van de SMTP server die worden toegestaan om dat te doen.

Dit is een CDO template die GMAIL's SMTP server gebruikt via SSL:
Code:
Sub CDOmail()
    Dim iMsg As Object
    Dim iConf As Object
    Dim Flds As Variant
    Dim Schema As String

    Dim SMTPsendusing As Byte
    Dim SMTPauthenticate As Byte
    Dim SMTPserver As String
    Dim SMTPserverport As Integer
    Dim SMTPusessl As Boolean
    Dim SMTPusername As String
    Dim SMTPpassword As String
    Dim SMTPconnectiontimeout As Integer
    
    Dim msgTO As String
    
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    SMTPsendusing = 2
    SMTPauthenticate = 1
    SMTPserver = "smtp.gmail.com"
    SMTPserverport = 465
    SMTPusessl = True
    SMTPusername = "USERNAME@gmail.com"
    SMTPpassword = "HETWACHTWOORD"
    SMTPconnectiontimeout = 10
    
    msgTO = "hsv@helpmij.nl"
    
    Schema = "http://schemas.microsoft.com/cdo/configuration/"
    iConf.Load -1   'zet CDO standaard instellingen
    Set Flds = iConf.Fields
    With Flds
        .Item(Schema & "sendusing") = SMTPsendusing
        .Item(Schema & "smtpauthenticate") = SMTPauthenticate
        .Item(Schema & "smtpserver") = SMTPserver
        .Item(Schema & "smtpserverport") = SMTPserverport
        .Item(Schema & "smtpusessl") = SMTPusessl
        .Item(Schema & "sendusername") = SMTPusername
        .Item(Schema & "sendpassword") = SMTPpassword
        .Item(Schema & "smtpconnectiontimeout") = SMTPconnectiontimeout
        .Update
    End With

    With iMsg
        Set .Configuration = iConf
        .To = msgTO
        .CC = ""
        .BCC = ""
        .From = SMTPusername
        .Subject = "Server Status"
        .TextBody = "De mail tekst"
        [COLOR="#008000"]'.AddAttachment "C:\Map\Bestand.pdf"[/COLOR]
        .Send
    End With

    Set iMsg = Nothing
    Set iConf = Nothing
    Set Flds = Nothing
End Sub

Het GMAIL account moet dan wel zo zijn ingericht dat LESS SECURE apps mogen worden gebruikt voor het versturen van email.
Uiteraard kan je een SMTP server naar keuze gebruiken, als je je maar aan de eisen van de betreffende server houdt.
Office365 bijvoorbeeld vereist dat USERNAME en SENDER hetzelfde zijn.
 
Laatst bewerkt:
Heb nog wat getest en krijg keer op keer de volgende melding

The "sendingUsing" configuration value is invalid

Is dit een instelling die ik moet veranderen

Groet Henk
 
De instelling sendingusing bestaat niet, dat moet SendUsing zijn en als je via een poort (25) wilt versturen moet SendUsing 2 zijn.
Kijk ook naar de uitbreiding die ik in#8 plaatste.
 
ligt niet aan de task

Edmoor,

Ik heb net even een andere test gedaan.
Eerst met de task een move gedaan met een test .bat file en dat ging goed dus weet dat de task goed gaat.

Dus heb toen het excel script aangepast dat i.p.v. dat hij gaat verzenden dat hij een kopie van de sheet in de map opslaat...... en daar gaat het fout.
het lijkt er dus op dat het verkeerd gaat met het aansturen van de script.vsb

Code:
cscript script.vbs "P:\automatisering\Scripts\Excel Batch script\Registratie-Documenten\Registratie-Documenten.xlsm"

of in het script.vsb zelf
Code:
Dim args, objExcel

Set args = WScript.Arguments
Set objExcel = CreateObject ("Excel.Application")

objExcel.Workbooks.open args(0)
objExcel.Visible = true

objExcel.Run "hsv"

objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit

Maar het blijf vreemd dat het handmatig wel goed gaat maar via de task niet (zou dit dan niet kunnen via een task)

Groet Henk
 
Is vanuit de Task Scheduler voor een proces waarbij de gebruiker niet is ingelogd die P: schijf wel beschikbaar?
Dat is standaard namelijk niet zo.
Zet deze regel eens in de bat file om de P: schijf te koppelen
NET USE P: \\COMPUTER\automatisering\Scripts\Excel Batch script\Registratie-Documenten

Waarbij je COMPUTER vervangt door de naam van de computer waar dat pad daadwerkelijk staat.
Of test het eens vanaf de C: of een andere lokaal beschikbare schijf in plaats van een netwerk locatie.
 
Laatst bewerkt:
Anders opgelost

Edmoor,

Bedankt voor je input.
Code:
\\SERVER1\Data\automatisering\Scripts\Excel Batch script\Registratie-Documenten\Start_Document_Registratie.xlsm

Ik had deze al veranderd naar de directe link.
Hij blij problemen houden met mailen.
Aan gezien deze mail naar een intern persoon ging heb ik het anders opgelost,
Ik maak een excel bestand die ik dan in zijn persoonlijke map zet, en die kan ik wel aanroepen via de task via de auto open die de maco oproep,

Ondertussen blijf ik het bekijken over het mailen want wil het eigenlijk voor meer toepassingen gaan gebruiken.

Helaas :confused: de oplossing er nog niet voor gevonden,

Henk
 
Vanuit scheduled tasks is het gebruik van CDO in plaats van Outlook aan te bevelen.
 
Ik ga het onderzoeken Edmoor.

Bedankt zover

Groet Henk
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan