Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:08 Der er 16 kommentarer og
1 løsning

Oprette semikolon sepereret fil vha. VBA

Hej

Jeg har tidligere brugt denne kode til at oprette en semikolon sepereret fil, mne efter skiftet til XP så virker deet ikke længere. DK version! Det kan ikke bruges at det bliver komma sepereret.

ActiveWorkbook.SaveAs Filename:="c:\test.csv", FileFormat:=xlCSV

Er der nogle der kan hjælpe med den rigtige kode.

VH CK
Avatar billede jkrons Professor
08. oktober 2003 - 11:28 #1
Hos mig laver din kode fine semikolonseparerede filer, så mon ikke det er dine systemindstillinger i Win XP, der er sat til at bruge komma som listeseparator i stedet for semikolon?
Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:30 #2
Er det en Dansk version du arbejder med?
Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:31 #3
Iøvrigt så står der fint ; som listseperator
Avatar billede jkrons Professor
08. oktober 2003 - 11:37 #4
Jeg arbejder med Dansk WIN XP, Dansk Excel XP.

Har du set under International i Excels egne indstillinger?
Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:40 #5
Der er ikke noget spændende at kigge på derinde, men hvis jeg går op manuelt og gemmer som CSV fil så kan jeg sagtens få den til at gemme som ; separeret... det virker da lidt mystisk??

VH CK
Avatar billede jkrons Professor
08. oktober 2003 - 11:41 #6
Meget mystisk
Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:42 #7
Og hvad værre er det er ikke kun ved mig, men også ved den kunde der har staret balladen. Vi kører dog begge Windows 2000...

VH CK
Avatar billede fagpoler Novice
08. oktober 2003 - 11:43 #8
Sub Makro1()

    ChDir "C:\"
    ActiveWorkbook.SaveAs Filename:="C:\test.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
End Sub
Avatar billede fagpoler Novice
08. oktober 2003 - 11:44 #9
Den kode virker hos mig i XP
Sub Makro1()

    ChDir "C:\"
    ActiveWorkbook.SaveAs Filename:="C:\test.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
End Sub
Avatar billede kedde65 Praktikant
08. oktober 2003 - 11:49 #10
Ja det gør den også ved JKrons og det gjorde den også ved mig indtil jeg skiftede til XP - SOM JEG SKREV I SPØRGSMÅLET, men det gør den altså ikke længere. Derfor er det spørgsmål oprettet for at få en løsning på hvordan man så skal komme udover den begrænsning der åbenbart ligger i Excel XP DK med Windows 2000 som styresystem.

VH CK
Avatar billede stefanfuglsang Juniormester
08. oktober 2003 - 12:14 #11
Der er flere udgaver af CSV:
xlCSV
xlCSVMac
xlCSVMSDOS
xlCSVWindows
Er det det samme med alle ?
Avatar billede kedde65 Praktikant
08. oktober 2003 - 12:15 #12
Ja det giver enten samme resultat eller fejl i data.

VH CK
Avatar billede bak Forsker
08. oktober 2003 - 12:25 #13
Jeg ville være ked at at skulle bruge csv-filer hos en kunde.

Der hersker en del forvirring om hvordan output og input er.
Hvis man bruger selve excel til at lave den får dem sine delimiters fra systemindstillinger, hvis man bruger vba er den hardkodet til at bruge komma ud og ind (i de systemer jeg har prøvet win 2000 / xl2000 /xl2002).

Brug en tekstfil istedet. Her kan du selv sætte de delimeters du vil bruge både ind og ud.
Avatar billede kedde65 Praktikant
08. oktober 2003 - 12:26 #14
Jeg er sådan set ligeglad med hvordan filen bliver oprettet. Faktum er at deres Axapta system forventer at få en fil hvor værdierne er adskildt af Semikolon. Har du et kode eksempel på det andet du skriver?

VH CK
Avatar billede bak Forsker
08. oktober 2003 - 12:26 #15
Sub EksportAsCSV_DK(strFileName As String, rngOmr As Range)
Const Delim    As String = ";"  'afgrænser (delimiter)
Dim y          As Long          'tæller
Dim x          As Long          'tæller
Dim strTemp    As String        'streng til de enkelte rækker
Dim lRows      As Long          'antal rækker
Dim lCols      As Long          'antal kolonner
Dim lFno      As Long          'fil nummer

lFno = FreeFile
lRows = rngOmr.Rows.Count
lCols = rngOmr.Columns.Count
Open strFileName For Output As #lFno

For x = 1 To lRows
    strTemp = ""
    For y = 1 To lCols
        strTemp = strTemp & rngOmr(x, y).Text
        If y < lCols Then
            strTemp = strTemp & Delim
        Else
            Print #lFno, strTemp
        End If
    Next

Next
Close #lFno

End Sub
Avatar billede kedde65 Praktikant
08. oktober 2003 - 12:33 #16
bak>>Selvfølgelig - jeg ville nu bruge FSO til det men det er ligemeget. Jeg takker for hjælpen. Læg et svar og du får point.

VH CK
Avatar billede bak Forsker
08. oktober 2003 - 12:36 #17
ok :-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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