15. december 2003 - 18:41Der er
16 kommentarer og 1 løsning
Konvertere CSV-fil til Distributionsliste
Håber det er rette gruppe. Nyhedsbrevs-modul. Gemmer via webinterface i ASP i en database alle de kunder som skriver sig på listen. Når jeg skal bruge listen, aktiveres manuelt en ASP side, som opretter en kommasep. fil eller lign. og sender den som en email til sekretæren
Nu vil hun gerne lave en email i Outlook og så sende som BCC til alle på listen. Men hvordan får jeg Outlook til at lave en distributionsliste ud af den fil? En makro havde jeg forestillet mig, således at det bliver så nemt som muligt for sekretæren. Jeg er totalt ukendt i VB verdenen, så gerne løsning istedet for råd. Derfor også de mange points.
Hurtigt og brugbart svar belønnes med flere points
CSV filen har jeg ikke endnu, men skrev det fordi det regnede jeg ikke med blev et problem. Men det bliver vel bare noget med en masse emails adskildt af ",". Der gemmes ikke noget andet i databasen. Evt. kunne jeg også bare lave en ny linje i tekstfilen istedet for komma.
VB eller macro. Du bestemmer, men det skal bare være nemt for hende at aktivere din kode, lave en email og så klikke på Til, vælge distributionslisten og klikke Send.
jeg har intet med VB at gøre ;) så hvis du tænker på en compiler, så har jeg ikke nogen. Beklager.
Kan du lave en exe fil som evt. henter en tekstfil i den mappe som den ligger i og så opretter Distributionslisten? Evt. kan jeg få en ven til at kompilere den, da det jo er rarest at se hvad den egentlig laver :)
Opret en form. Smid en textbox (Text1) og en knap (Command1) på formen
Copy-paste følgende kode:
Option Explicit Dim Adresser() As String
Private Sub Command1_Click() If ReadCSV(Text1.Text) = True Then Call SendEmail Else MsgBox "Der opstod en fejl ved at læse filen " & Text1.Text & ". Skyd programmøren." End If
End Sub
Private Sub Form_Load() Command1.Caption = "opret e-mail" Text1.Text = "C:\test.csv" 'RETTES End Sub
Private Sub SendEmail() Dim Outlook As Outlook.Application Dim mail Dim MAPI Dim i As Integer Dim strAdresser As String Set Outlook = CreateObject("Outlook.Application") Set MAPI = Outlook.GetNameSpace("MAPI") Set mail = Outlook.CreateItem(0) strAdresser = Adresser(LBound(Adresser)) For i = LBound(Adresser) + 1 To UBound(Adresser) strAdresser = strAdresser & "," & Adresser(i) Next i mail.Recipients.Add (strAdresser) mail.Subject = "Hejsa" 'RETTES mail.Body = "Endnu en mail - øv" 'RETTES mail.send Set Outlook = Nothing Set mail = Nothing End Sub
Private Function ReadCSV(Filename As String) As Boolean ReadCSV = False Dim FilNummer As Integer Dim Tæller As Integer FilNummer = Freefile Open Filename For Input As #FilNummer Do While Not EOF(FilNummer) ReDim Preserve Adresser(Tæller) Line Input #FilNummer, Adresser(Tæller) Tæller = Tæller + 1 Loop Close #FilNummer ReadCSV = True End Function
Jeg kan godt kompilere til en sex og sende hvis du giver en e-mail adresse
Du må gerne lave den .exe, for jeg stoler på dig. MEN....som jeg læser koden, "mail.Recipients.Add (strAdresser) ", så sendes de ikke som BCC?
Og fungerer det i Outlook, eller sender hun emaileen via din exe? For så mister hun jo en masse formateringsmuligheder. Jeg spørger sikkert dumt, ved det, men skal være helt sikker på det helst fungerer som en distributionsliste via Til-knappen.
På den anden side - få hellere din ven til at kompilere det - og husk at sige til ham, at han skal oprette en reference til MicroSoft Outlook (jeg har ikke denne reference på min PC, og gider ikke rode med det)
Du kan også meget simpelt kopiere alle adresserne til clipboard - her en ny version af progarammet:
Option Explicit Dim Adresser() As String
Private Sub Command1_Click() If ReadCSV(Text1.Text) = True Then CopyToClipboard Else MsgBox "Der opstod en fejl ved at læse filen " & Text1.Text & ". Skyd programmøren." End If
End Sub
Private Sub Form_Load() Command1.Caption = "opret e-mail" Text1.Text = "C:\test.csv" 'RETTES End Sub
Private Sub CopyToClipboard() Dim i As Integer Dim strAdresser As String
strAdresser = Adresser(LBound(Adresser)) For i = LBound(Adresser) + 1 To UBound(Adresser) strAdresser = strAdresser & "," & Adresser(i) Next i Clipboard.Clear Clipboard.SetText (strAdresser) End Sub
Private Function ReadCSV(Filename As String) As Boolean ReadCSV = False Dim FilNummer As Integer Dim Tæller As Integer FilNummer = Freefile Open Filename For Input As #FilNummer Do While Not EOF(FilNummer) ReDim Preserve Adresser(Tæller) Line Input #FilNummer, Adresser(Tæller) Tæller = Tæller + 1 Loop Close #FilNummer ReadCSV = True End Function
Din sekretær kører programmet, går ind i Outlook, stiller cursoren i BCC-feltet, trykker Ctrl+V, og alle adresserne fra csv-filen står nu i BCC-feltet.
Så slipper du for at kommunikere med Outlook fra VB med alle de problemer det kan give :o)
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.