Toon posts:

met vba code het lijstscheidingsteken bepalen

Pagina: 1
Acties:
  • 1.032 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo, wie o wie kan mij helpen met dit probleem.

Ik krijg wekelijks een tekstbestand aangeleverd met een vaste veld en record indeling.
Dit bestand dient elke week dezelfde bewerkingen te ondergaan.
Ik heb dit in Excel VBA geautomatiseerd. Er is echter een probleem met het opslaan.
Sla ik het bestand handmatig vanuit Excel op als een .CSV bestand dan gebruikt excel ( precies zoals ik wil ) de ; als lijstscheidingsteken. Echter wanneer ik dit laat doen via mijn macro wordt de , als lijstscheidingsteken gebruikt. Wie kan mij voorzien van ik goed stukje VBA code waarin ik het lijstscheidingsteken zelf kan bepalen.
Hieronder de gebruikte VBA code zoals ik deze nu gebruik. Alles werkt dus perfect behalve dan, dat het bestand als een , i.p.v. ; gescheiden bestand wordt opgeslagen.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sub KNSticker()
'
' KNSticker Macro
' De macro is opgenomen op 10-5-2006 door P.Preuter.
'

'
    ChDir "S:\004WNG\Commander Keten\Dataman\Uitvoer 01"
    Workbooks.OpenText FileName:= _
        "S:\004WNG\Commander Keten\Dataman\Uitvoer 01\KNSticker.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(10 _
        , 1), Array(11, 1), Array(51, 1), Array(52, 1), Array(92, 1), Array(93, 1), Array(143, 1), _
        Array(144, 1), Array(194, 1), Array(195, 1), Array(235, 1), Array(294, 1), Array(295, 1), _
        Array(345, 1), Array(346, 1), Array(351, 1), Array(352, 1), Array(402, 1), Array(403, 1))
    Range("B:B,D:D,F:F,H:H,J:J,L:L,M:M,O:O,Q:Q").Select
    Range("Q1").Activate
    ActiveWindow.SmallScroll ToRight:=4
    Range("B:B,D:D,F:F,H:H,J:J,L:L,M:M,O:O,Q:Q,R:S").Select
    Range("R1").Activate
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.ScrollColumn = 1
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Nummer"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Naam1"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Naam2"
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "Adres"
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "PCPlaats"
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "Land"
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "Titel"
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "Aantal"
    Columns("A:A").Select
    Selection.ColumnWidth = 10
    Columns("B:G").Select
    Selection.ColumnWidth = 40
    ActiveWindow.ScrollColumn = 7
    Columns("H:H").Select
    Selection.ColumnWidth = 2
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
    Selection.Sort Key1:=Range("F2"), Order1:=xlAscending, Key2:=Range("H2") _
        , Order2:=xlAscending, Key3:=Range("E2"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Application.WindowState = xlMinimized
    Application.WindowState = xlNormal
    ActiveWorkbook.SaveAs FileName:= _
        "S:\004WNG\Commander Keten\Dataman\Uitvoer 01\KNSticker.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWorkbook.SaveAs FileName:= _
        "S:\004WNG\Commander Keten\Dataman\Uitvoer 01\KNSticker.csv", FileFormat:= _
        xlCSV, CreateBackup:=False
Application.DisplayAlerts = False
Workbooks.Close
Application.DisplayAlerts = True
End Sub

[ Voor 0% gewijzigd door Lustucru op 25-10-2006 14:03 . Reden: code tags ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je kan je code ook tussen [code=vba][/] blokken zetten, dat maakt het wat overzichtelijker. Ik heb dit probleem zelf ooit al eerder gehad en heb het uiteindelijk wel opgelost.

Ik weet alleen niet of ik het heb opgelost door met de Regional Settings te spelen of dat ik toendertijd zelf een implementatie heb geschreven ala: http://www.ozgrid.com/for...php?t=37476&highlight=csv

De link hierboven heb ik overigens gevonden door te [google=Excel VBA define delimiter csv].

HTH

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Engelstalige Excelversie naar ik aanneem? Standaard zal een Nederlandse Excel op een Nederlandse XP ';' als lijstscheiding gebruiken.
SaveAs kent de local parameter. Als je die meegeeft als true gedraagt SaveAs zich als het lokale systeem. :)

offtopic:
en welkom @ GoT ;)

[ Voor 5% gewijzigd door Lustucru op 25-10-2006 14:35 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Hoi BtM909,

Bedankt voor de tip.
Ik heb inderdaad via de link die jij opgaf een stuk VBA code kunnen vinden.
Deze code iets moeten aanpassen voor mijn eigen Code.
Hij werkt echter perfect en zal mijn voordeel hier zeer zeker mee kunnen doen
bij de ontwikkeling van andere macro's.

Bedankt!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ik denk dat je wellicht ook Niesje's tip ook moet nagaan, want dat zou betekenen dat je niet je eigen csv export hoeft te gebruiken ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.