Avatar billede acw Nybegynder
21. februar 2002 - 16:35 Der er 6 kommentarer og
3 løsninger

Oprettelse af knapper

Jeg er i gang med at lave et regneark, hvor der skal være to knapper.

En der hedder gem og send, og en der hedder gem og luk

Gem og luk-knap:

I regnearket indtaster man sit navn.

Dette navn skal sættes ind i filnavnet, så der kommer til at stå "timeregistrering <navn> <måned>.xls

Efter dokumentet er gemt, skal det lukkes.

Gem og send knappen:

I regnearket indtaster man sit navn.

Dette navn skal sættes ind i filnavnet, så der kommer til at stå "timeregistrering <navn> <måned>.xls

Derefter skal filen vedhæftes en mail og sendes til en bestemt e-mail.

Efter dokumentet er gemt og sendt, skal det lukkes.

Avatar billede martin_moth Mester
21. februar 2002 - 17:43 #1
Forudsat at Navn står i f.eks. celle B1, og at filen skal gemmes det samme sted blot under det nye navn, og at måned angives som et tal fra 1 til 12:

Gem og Luk:

Private Sub cmdGemogLuk()
  Dim Sti As String, Navn As String
  Sti = ActiveWorkbook.Path
  Navn = "Timeregistrering " & Cells(1, 2).Value & Date
  If Cells(1, 2).Value = "" Then
    If vbNo = MsgBox("Der er ikke angivet et navn. Vil du gemme filen som " & Navn & "?", vbYesNo) Then
      MsgBox "Fil ikke gemt"
      Exit Sub
    End If
  End If
  ActiveWorkbook.SaveAs Filename:=Sti & "\" & Navn
  MsgBox "Fil gemt som " & Navn & " i mappen " & Sti
  'Application.Quit
End Sub

Du kan også vælge helt af droppe if-sætningerne - de er blot en ekstra service til brugeren.

Gem og Send:

Det meste fra Gem og Luk går igen (så det kunne jo laves som en seperat procedure). Men du bliver nødt til at kommunikere med outlook - eller hvilket program du nu bruger. Og det er straks værre - og noget jeg vil lade de rigtige eksperter svare på. Har du overvejet om det nu også ER det du vil - starte et emailprogram op, vedhæfte en fil og sende en mail fra en macro der udføres i Excel?

Jeg tror du skal have fat i Dim obj_Outlook As Outlook.Application - og så vil jeg lade de næste 20-50 linier op til de kloge ;o) (Men er med på en lytter)

/Martin
Avatar billede martin_moth Mester
21. februar 2002 - 17:44 #2
NB: Du skal naturligvis fjerne tegnet ' foran Application.Quit ;o)
Avatar billede martin_moth Mester
21. februar 2002 - 17:45 #3
Nå ja - nu kommer hele datoen med i filnavnet. Brug Month(Date) for blot at få den aktuelle måned...
Avatar billede bak Forsker
21. februar 2002 - 18:41 #4
Prøv lige denne, den virker desværre ikke på alle maskiner.Private Sub cmdGemogSend()
  Dim Sti As String, Navn As String
  Sti = ActiveWorkbook.Path
  Navn = "Timeregistrering " & Cells(1, 2).Value & Date
  If Cells(1, 2).Value = "" Then
    If vbNo = MsgBox("Der er ikke angivet et navn. Vil du gemme filen som " & Navn & "?", vbYesNo) Then
      MsgBox "Fil ikke gemt"
      Exit Sub
    End If
  End If
  ActiveWorkbook.SaveAs Filename:=Sti & "\" & Navn
**************************************
  Application.Dialogs(xlDialogSendMail).Show _
arg1:="navn@domaene.dk", _
arg2:="Her er subjektlinien"
******************************
  MsgBox "Fil gemt som " & Navn & " i mappen " & Sti
  'Application.Quit
End Sub
Avatar billede martin_moth Mester
21. februar 2002 - 18:53 #5
Doh! - word har jo en funktion der hedder "send til > postmodtager". Veg havde noget helt andet i tankerne - noget med at man skulle starte et mail-program osv. osv. Så er det jo ikke så kompliceret endda ;o) /Martin
Avatar billede acw Nybegynder
21. februar 2002 - 19:50 #6
Mange tak for begge indlæg. Men martin, du skriver at det ik er så kompliceret alligevel. Hvad skal man så gøre?
Avatar billede xelor Nybegynder
21. februar 2002 - 19:59 #7
En funktion til at sende post kunne skrives som følger :

Function SendMail(mvarRec As String, mvarSubj As String, mvarBody As String, Optional mvarAttachment As String) As Boolean

on error goto errorhandler


Dim objSession As MAPI.Session
Dim objMessage As Message
Dim objRecip As Recipient
Dim objAttachment As Attachment

Set objSession = New MAPI.Session
objSession.Logon

Set objMessage = objSession.Outbox.Messages.Add
objMessage.Subject = mvarSubj
objMessage.Text = mvarBody

Set objRecip = objMessage.Recipients.Add
objRecip.Name = mvarRec
objRecip.Type = CdoTo
objRecip.Resolve

If mvarAttachment <> "" Then
    Set objAttachment = objMessage.Attachments.Add
    objAttachment.ReadFromFile mvarAttachment
    objAttachment.Name = "File from me"
End If

objMessage.Update
objMessage.Send showDialog:=False
objSession.Logoff
SendMail=true

exit function

errorhandler:
sendmail=false

End Function

/Xelor
Avatar billede xelor Nybegynder
21. februar 2002 - 20:01 #8
Funktionen forudsætter at der sættes referencer til CDO 1.21.

Objektet er en del af Outlook, men bliver ikke installeret som standard. De vælget til under punktet Dataudveksling (eller noget i den stil)

/Xelor
Avatar billede jkrons Professor
21. februar 2002 - 22:04 #9
Denne funktion gemmer og sender aktuelt regneark som vedhæftet fil. Uden errorhandler men på noget færre linier kode. Den forudsætter at navnet står i celle p1, men det kan hurtigt ændres. Modtager navnet skal selvfølgelig også ændres:

Sub GemSend()


navn = Range("p1").Value
md = Month(Date)

    ActiveWorkbook.SaveAs Filename:= _
        "C:\bifmedlem\" & "timeregistrering " & navn & " " & md & ".xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.SendMail Recipients:="bruger@server.dk", Subject:="Dette er en Prøve"
    ActiveWindow.Close
End Sub
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester