Avatar billede jjensen99 Nybegynder
30. august 2011 - 15:36 Der er 6 kommentarer og
1 løsning

Problemer med & tegn i en Excel - VBA kode

Jeg arbejder med en VBA kode, som jeg bruger til at skrive og sende emails automatisk. Dette fungerer fint indtil jeg får data i excel(2007), hvor cellerne, som koden referer til indeholder et eller flere &-tegn.

Det kan fx være navnet på den virksomhed jeg skal sende emailen til. Her bliver min tekststreng, som regel helt tom eller alternativt sender den slet ikke emailen. Derfor er jeg nødt til at gennemsøge mine data for &-tegn hver gang jeg skal bruge koden.

Jeg vil være meget taknemmelig for hjælp til at løse problemet.

VBA koden ser sådan ud i en lidt kortere version :

For r = 4 To 10

        'Get email
        Email = Cells(r, 108)
       
        'Message subject
        Subj = "Hej XXX" & Cells(r, 11) & " cvr nr: " & Cells(r, 10)

        'Compose message
        Msg = ""
        Msg = Msg & "Hej XXX"
        Msg = Msg & cells(r,26)

        'Replace spaces with %20 (hex)
        Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
        Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")
               
        'Replace carriage returns with %0D%0A (hex)
        Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")        '      Create the URL
        URL = "mailto:" & Email & "?subject=" & Subj & "&body=" & Msg

      'Execute the URL (start the email client)
        ShellExecute 0, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus

        'Wait two seconds before sending keystrokes
        Application.Wait (Now + TimeValue("0:00:01"))
        Application.SendKeys "%s"
Next r
Avatar billede Mads Larsen Nybegynder
30. august 2011 - 15:48 #1
Det kan muligvis være & du leder efter :)

http://htmlhelp.com/tools/validator/problems.html
30. august 2011 - 16:19 #2
Prøv at tilføje linjen

  Msg = Replace(Msg, "&", "&")
Avatar billede jjensen99 Nybegynder
01. september 2011 - 08:46 #3
Jeg har prøvet at tilføje linjen, men uden held. Den sender stadig en helt tom mail hvis navnet på virksomhedens navn indeholder et &-tegn.

Jeg har ydermere fundet ud af at hvis virksomhedens navn er meget langt sender den også en tom mail. Nu er jeg meget forvirret, men tror at i er inde på noget af det rigtige.
01. september 2011 - 08:53 #4
Åh - så ikke, at det var navnet på firmaet, der var problemet.

Hvor henter du firmanavnet?

Du kan bruge konstruktionen

Replace(<variabelnavn/celle>, "&", "&amp;")

alle de steder, hvor, der kan optræde et & og du kan sætte et "og" i stedet for "&amp;" hvis du hellere vil det.
Avatar billede jjensen99 Nybegynder
01. september 2011 - 09:08 #5
Okay det prøver jeg lige.

Jeg henter firmanavnet i Cells(r,11)- Jeg bruger det både i subject (Subj) på mailen og i selve meddelelsen(Msg).

Men det skal lige siges at problemet kan opstå flere steder, men det er typisk i kolonne 11 jeg oplever at det skaber problemer.
Avatar billede jjensen99 Nybegynder
01. september 2011 - 09:11 #6
Første del ser helt præcist sådan her ud. Her bruges firmanavnet igen i tredje linje.

'      Compose the message
        Msg = ""
        Msg = Msg & "Hej " & Cells(r, 107) & "." & vbCrLf & vbCrLf
        Msg = Msg & "tekst" & Cells(r, 11) & " tekst "
01. september 2011 - 09:18 #7
Så ville jeg skrive

Msg = ""
Msg = Msg & "Hej " & Replace(Cells(r, 107), "&", "&amp;") & "." & vbCrLf & vbCrLf
Msg = Msg & "tekst" & Replace(Cells(r, 11), "&", "&amp;") & " tekst "
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