06. oktober 2011 - 12:50Der er
8 kommentarer og 1 løsning
Tilpasning af makro - generering af kommafil
Hej alle.
Jeg har en makro som jeg ikke helt kan få til at virke som jeg gerne vil.
Jeg har i dag et regne ark med 8 kolonner. Min makro laver en tekst fil hvor hver kolonne er adskilt af et komma. Men makroen afslutter også med et komma. Dette skal den ikke....
' Filplacering og Efternavn Efternavn = ".txt" Inboks = InputBox("Indtast filnavn" & (Chr(10) & Chr(10)) & "Filen får automatisk efternavnet .txt", "Nielsen og Christensen - Eksport af kommafil", "D:\") ' Åbner en fil til output i STI med EFTERNAVN Open "" + Inboks + Efternavn + "" For Output As #1
' Løkke - kører alle linier igennem Dim iModel As Integer Dim sModel As String Do For iModel = 0 To Kolonne - 1 sModel = sModel + TilDos850(ActiveCell.Offset(0, iModel)) + "," Next iModel Print #1, sModel sModel = "" ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Offset(0, 0) = "" And ActiveCell.Offset(1, 0) = "" And ActiveCell.Offset(2, 0) = "" ' Lukker filen #1 Close #1 ' Luk filen.
' Placering efter udlæsning Range("A1").Select End End Sub
Private Sub UserForm_Initialize() Application.ScreenUpdating = False For ix = 1 To 100 Step 1 Model.AddItem ix Next ix End Sub
'*==================================================== '* Funktion som i en tekst erstatter ANSI-koderne for '* æøåÆØÅ til de tilsvarende koder for Dos og OS/2 '* efter tegntabel 850 '*==================================================== Function TilDos850(Tekst As String) As String
Dim ix As Integer, iz As Integer Dim Tegn As String, Vaerdi As String Dim Kode(1, 6) As Integer
For ix = 1 To Len(Tekst) Step 1 Tegn = Mid(Tekst, ix, 1) For iz = 0 To UBound(Kode, 2) Step 1 If Asc(Tegn) = Kode(0, iz) Then Tegn = Chr(Kode(1, iz)) Exit For End If Next Vaerdi = Vaerdi & Tegn Next TilDos850 = Vaerdi
et stykke rettes til Do For iModel = 0 To Kolonne - 2 sModel = sModel + TilDos850(ActiveCell.Offset(0, iModel)) + "," Next iModel sModel = sModel + TilDos850(ActiveCell.Offset(0, Kolonne - 1)) Print #1, sModel sModel = "" ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Offset(0, 0) = "" And ActiveCell.Offset(1, 0) = "" And ActiveCell.Offset(2, 0) = ""
så afsluttes de enkelte linjer ikke med ,
og Function TilDos850 vil jeg rette til '*==================================================== '* Funktion som i en tekst erstatter ANSI-koderne for '* æøåÆØÅ til de tilsvarende koder for Dos og OS/2 '* efter tegntabel 850 '*==================================================== Function TilDos850(Tekst As String) As String
Tekst = Replace(Tekst, Chr(230), Chr(145)) 'æ Tekst = Replace(Tekst, Chr(248), Chr(155)) 'ø Tekst = Replace(Tekst, Chr(229), Chr(134)) 'å Tekst = Replace(Tekst, Chr(198), Chr(146)) 'Æ Tekst = Replace(Tekst, Chr(216), Chr(157)) 'Ø Tekst = Replace(Tekst, Chr(197), Chr(143)) 'Å Tekst = Replace(Tekst, Chr(44), Chr(46)) ', -> . TilDos850 = Tekst
Den nemme løsning er nok, at skrive kommaet til sidst i linjen, som du allerede gør, og derefter fjerne det igen med en left og så klippe hele variablen undtagen de sidste tegn.
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.