Just nu i M3-nätverket
Gå till innehåll

MsgBox som inte kommer fram


short

Rekommendera Poster

Jag har ett program som slutar så här:

 Application.ScreenUpdating = True  
 MsgBox ("Körningen klar!")

MsgBoxen kommer dock inte fram innan man klickat på sidan. Jag har försökt med fördröjning mm men inget fungerar. Finns det något ja kan göra för att MsgBoxen ska komma fram utan att man klickar på sidan? Jag har tidigare i programmet skapat en ny arbetsbok och använt

Application.Dialogs(xlDialogSendMail).Show arg1:=Till, arg2:=Ämne

 men kontrollen har gått tillbaka till den aktuella arbetsboken.

Länk till kommentar
Dela på andra webbplatser

Det verkar vara send.mail instruktionen som ställer till det

Jag har prövat bara den och MsgBox och då kommer inte MsgBox fram

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Du kanske behöver skriva in en programsats som aktiverar det fönster du vill ha aktivt. Koden bör se ut något i den här stilen:


Application.ScreenUpdating = True

Workbooks("DokNamn.xls").Activate

MsgBox ("Körningen klar!")


Byt så klart ut "DokNamn.xls" mot det filnamn som ditt dokument har.

Länk till kommentar
Dela på andra webbplatser

Du kanske behöver skriva in en programsats som aktiverar det fönster du vill ha aktivt. Koden bör se ut något i den här stilen:


Application.ScreenUpdating = True

Workbooks("DokNamn.xls").Activate

MsgBox ("Körningen klar!")


Byt så klart ut "DokNamn.xls" mot det filnamn som ditt dokument har.

Jag har redan försökt. Jag har skrivit ett jättekort program som bifogas.

Sub nn()
Namn = ActiveWorkbook.Name
Application.Dialogs(xlDialogSendMail).Show arg1:=Till, arg2:=Ämne
Workbooks(Namn).Activate
MsgBox "Hallå"
End Sub

Även här kommer inte MsgBox fram innan man klickat på sidan. Jag har försökt med att köra select på sidan eller på en range på sidan men inget hjälper.

Länk till kommentar
Dela på andra webbplatser

Ove Söderlund

Undrar om inte problemet beror på att sendmail-dialogrutan väntar på respons av användaren, verkar så enligt VBA-hjälpen (2003 i mitt fall):

 

 

Show MethodShow method as it applies to the Dialog object.

 

Displays the built-in dialog box and waits for the user to input data. Boolean.

 

expression.Show(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)

 

expression    Required. An expression that returns one of the above objects.

 

arg1, arg2, ..., arg30    Optional Variant. For built-in dialog boxes only, the initial arguments for the command. For more information, see the "Remarks" section.

 

Du kanske kan få hjälp via den här sidan med info om att skicka mail via VBA:

http://www.rondebruin.nl/win/section1.htm

Länk till kommentar
Dela på andra webbplatser

Tyvärr är det fortfarande en gåta trots noggrann läsning. Koden fastnar direkt efter sendmail, symbolen nedtill i datorfönstret börjar blicka och koden kommer igång först efter manuell klick. Lägga in wait, select, activate hjälper inte. SendMail kräver inget svar utan de argument som krävs har jag lämnat (till och ämne).

Länk till kommentar
Dela på andra webbplatser

Det finns bättre sätt att skicka epost än med SendMail. Som sagts ovan, ta en titt på Ron de Bruins sidor, jag rekommenderar CDO som inte är beroende av annat epostprogram för att fungera.

 

Har nästan för mig att AV-program kan stoppa böcker med SendMail i, stoppa och radera koden eftersom virus/trojaner har använt den.

Länk till kommentar
Dela på andra webbplatser

Men koden ovan, den fungerar som den ska för mig.

 

Vilket Epostprogram försöker Excel starta, finns det ett standardprogram för epost installerat?

Länk till kommentar
Dela på andra webbplatser

Windows Live Mail 2011. Programmet både startar och sänder mailet. Problemet ligger när denna operation är klar. Ska testa CDO i kväll. Ska också testa det befintliga programmet på min frus dator då för att se om felet ligger i min dator.

Länk till kommentar
Dela på andra webbplatser

När jag kör Sendmail skapar Excel ett epost i Thunderbird. Direkt efter tar Excel tillbaka fokus och poppar upp dialogen.

Därefter får jag leta reda på fönstret som poppade upp.

 

CDO - då skickas eposten helt via Excel, direkt till en server. Då behövs med andra ord inloggningsuppgifter i Excel för att de ska fungera. Sendmail är på det viset enklare och, ja, fungerar ju.

Länk till kommentar
Dela på andra webbplatser

CDO verkar ju smart under förutsättning att alla mail skickas från en erfaren användare. Man ska ju ange servern i koden. I min tillämpning är det många mindre erfarna användare som inte ens vet att det finns ett program och aldrig skulle klara av att skriva in ett servernamn. Då blir det nog lättare att klicka på det blinkande fönstret så att MsgBoxen kommer upp.

Länk till kommentar
Dela på andra webbplatser

och nackdelen kanske inta bara är att servern måste anges utan att man på de flesta håll måste logga in med användarnamn och lösen. Visserligen kan du spara undan dessa i Excel men... ja du förstår problemet.

 

Men initiera Sendmail från inom ett Userform, kanske du då kan få det att fungera bättre? Skriv ditt meddelande i detta Userform som du behåller framme.

Länk till kommentar
Dela på andra webbplatser

Riktigt smart!! :thumbsup: 
Jag gjorde ett Userform med bl a ett textfält där jag skriver meddelandet. Jag styr sedan användaren genom att enabled skiftar på knapparna så att användarnas åtgärderna kommer i rätt ordning.

Excel har sina egendomligheter och det är en skön konst att gå runt svårigheterna. :D 
 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...