Avatar billede anderssk Nybegynder
05. april 2006 - 15:15 Der er 16 kommentarer og
1 løsning

kald en makro for hver række

Hej

Jeg har et udtræk i excel.
Antallet af rækker kan varierer.
For hver række skal der kaldes en makro.

Normalt stiller jeg mig i kolonne A og kører makroen for hver linie, men det ville være perfekt hvis dette kunne ske automatisk.

Makroen der kaldes er en mailting som benytter modtager osv fra andre kolonner i rækken.
Avatar billede ladyhawke Novice
05. april 2006 - 16:24 #1
Ny makro med for løkke der kalder din nuværende makro?
Avatar billede anderssk Nybegynder
05. april 2006 - 16:51 #2
Nej. Løkken skal ind i den eksisterende makro og kalde en anden eksisterende makro.
Men hvis du har et eksempel på en ny kan det også bruges.
Avatar billede mrjh Novice
05. april 2006 - 17:16 #3
Nu har jeg jo ikke se din makro, men har du prøvet at starte den med en for each løkke ?
For Each obj In Range("a2", Range("a65536").End(xlUp))

... din makro

Next
Avatar billede anderssk Nybegynder
06. april 2006 - 08:57 #4
Jeg har prøvet med

For Each obj In Range("A2", Range("A65536").End(xlUp))
Call mail
Next

Lige nu er der 65 rækker i arket og den laver også 65 mail.
Problemet er bare at alle 65 mail er fra række 2 i arket.
Den går ikke videre til næste række.
Avatar billede mrjh Novice
06. april 2006 - 09:11 #5
Må vi se koden til subben mail. Det må være den som driller
Avatar billede anderssk Nybegynder
06. april 2006 - 09:18 #6
Sub mail()


Dim olApp As Object, olDrafts As Object
    Dim olMail As Object
    Dim Bdy As String
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)
    Set olDrafts = olApp.GetNamespace("MAPI").GetDefaultFolder(16)
    With olMail
        .Subject = "emne " & ActiveCell.Offset(0, 6)
        Bdy = Bdy & "Hej" & vbCrLf & vbCrLf
        Bdy = Bdy & "tekst " & ActiveCell.Offset(0, 1) & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf

        .Body = Bdy
        .Recipients.Add ActiveCell.Offset(0, 3)
        .Move olDrafts
    End With
    Set olMail = Nothing
    Set olApp = Nothing

End Sub
Avatar billede mrjh Novice
06. april 2006 - 09:30 #7
Prøv lige om denne virker i en for løkke
Har ikke lige testet den


Sub mail()


Dim olApp As Object, olDrafts As Object
    Dim olMail As Object
    Dim Bdy As String
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)
    Set olDrafts = olApp.GetNamespace("MAPI").GetDefaultFolder(16)
    For i = 0 To 100  'tilrettes
    With olMail
        .Subject = "emne " & ActiveCell.Offset(i, 6)
        Bdy = Bdy & "Hej" & vbCrLf & vbCrLf
        Bdy = Bdy & "tekst " & ActiveCell.Offset(i, 1) & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf

        .Body = Bdy
        .Recipients.Add ActiveCell.Offset(i, 3)
        .Move olDrafts
    End With
    i = i + 1
    Next
    Set olMail = Nothing
    Set olApp = Nothing

End Sub
Avatar billede anderssk Nybegynder
06. april 2006 - 09:40 #8
Får en runtime error
Men den laver to mails

Jeg regner med at det var sådan her du mente
For Each obj In Range("A2", Range("A65536").End(xlUp))
Dim olApp As Object, olDrafts As Object
    Dim olMail As Object
    Dim Bdy As String
    Dim i As Integer
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)
    Set olDrafts = olApp.GetNamespace("MAPI").GetDefaultFolder(16)
    For i = 0 To 100  'tilrettes
    With olMail
        .Subject = "emne " & ActiveCell.Offset(i, 6)
        Bdy = Bdy & "Hej" & vbCrLf & vbCrLf
        Bdy = Bdy & "tekst " & ActiveCell.Offset(i, 1) & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf

        .Body = Bdy
        .Recipients.Add ActiveCell.Offset(i, 3)
        .Move olDrafts
    End With
    i = i + 1
    Next
    Set olMail = Nothing
    Set olApp = Nothing
Next
Avatar billede mrjh Novice
06. april 2006 - 09:44 #9
Nej prøv at køre subben kun med en for løkke (uden for each) som min kommentar 9:30:00
Avatar billede anderssk Nybegynder
06. april 2006 - 09:51 #10
Samme resultat. Det melder runtime error ved
.Move olDrafts.
Avatar billede mrjh Novice
06. april 2006 - 10:24 #11
Jeg kan ikke helt gennemskue hvad .Move olDrafts gør, så jeg kan ikke rigtig hjælpe dig :-( Desværre
Avatar billede anderssk Nybegynder
06. april 2006 - 11:13 #12
Den ligger bare mailen i kladder i stedet for at afsende den.
Avatar billede excelent Ekspert
06. april 2006 - 16:40 #13
'et bud:
Sub mail()


Dim olApp As Object, olDrafts As Object
    Dim olMail As Object
    Dim Bdy As String
    Dim i
    For i = 0 To 65
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)
    Set olDrafts = olApp.GetNamespace("MAPI").GetDefaultFolder(16)
    With olMail
        .Subject = "emne " & ActiveCell.Offset(i, 6)
        Bdy = Bdy & "Hej" & vbCrLf & vbCrLf
        Bdy = Bdy & "tekst " & ActiveCell.Offset(i, 1) & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf

        .Body = Bdy
        .Recipients.Add ActiveCell.Offset(i, 3)
        .Move olDrafts
    End With
    Set olMail = Nothing
    Set olApp = Nothing
Next
End Sub
Avatar billede excelent Ekspert
06. april 2006 - 16:42 #14
Det er vist nærmere sådan :

Sub mail()

Dim olApp As Object, olDrafts As Object
    Dim olMail As Object
    Dim Bdy As String
    Dim i
    For i = 0 To 65
    Set olApp = CreateObject("Outlook.Application")
    Set olMail = olApp.CreateItem(0)
    Set olDrafts = olApp.GetNamespace("MAPI").GetDefaultFolder(16)
    With olMail
        .Subject = "emne " & ActiveCell.Offset(0, 6)
        Bdy = Bdy & "Hej" & vbCrLf & vbCrLf
        Bdy = Bdy & "tekst " & ActiveCell.Offset(0, 1) & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf
        Bdy = Bdy & "tekst" & vbCrLf

        .Body = Bdy
        .Recipients.Add ActiveCell.Offset(0, 3)
        .Move olDrafts
    End With
    Set olMail = Nothing
    Set olApp = Nothing
    ActiveCell.Offset(1, 0).Activate
Next
End Sub
Avatar billede anderssk Nybegynder
06. april 2006 - 22:13 #15
Det blev denne stump

Sub loopmail()
Dim Cell
Cell = ActiveCell.Offset(1, 0).Activate
Do While Cell = True
If Cell = False Then Exit Do
Call mail
Loop
End Sub
Avatar billede mrjh Novice
15. april 2006 - 15:23 #16
Luk lige dit spm. hvis det er løst
Avatar billede anderssk Nybegynder
15. april 2006 - 17:51 #17
lukket
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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