Avatar billede ng_tnt Nybegynder
21. december 2005 - 13:54 Der er 13 kommentarer og
2 løsninger

Eksport fra EXCEL med ekstra kolonner / semikoloner

Har en csv fil jeg har rettet diverse ting i, når jeg så gemmer den igen har den fjernet 2 semikolonner i enden af hver række - hvordan påfører man nemmest disse igen. Der er ca. 2000 linier så jeg ville jo gerne undgå manuelt at påføre dem i Notepad e.l.

p.f.t.
Avatar billede b_hansen Novice
21. december 2005 - 14:00 #1
Indsæt en overskrift i første række. Også for de tomme kolonner. Når du så gemmer filen som csv, vil overskrifterne ganske vist blive medtaget, men dem kan du bagefter slette i Notepad.
Avatar billede bak Forsker
21. december 2005 - 14:01 #2
Det nemmeste må være at indsætte to ekstra overskrifter, gemme filen.
Så går du i notepad og fjerne de to
Avatar billede b_hansen Novice
21. december 2005 - 14:02 #3
hi hi.... Jeg har slået bak med samme løsning.... og så med hele 23 sekunder!
Avatar billede ng_tnt Nybegynder
21. december 2005 - 14:06 #4
KLART.... Men kan dog ikke forstå at den kun laver det korrekt i de første 15 linier, resten tilføjer den ikke ;; til !!! Der er intet ændret i de efterfølgende linier, ser ens ud i Excel, men ved visning i Notepad er der kun tilføjet ;; i de første 15 linier ?? Nogen ideer ???
Avatar billede bak Forsker
21. december 2005 - 14:07 #5
hohohoho
godt gået b_hansen.
Avatar billede b_hansen Novice
21. december 2005 - 14:10 #6
Godt at se, at du allerede har fundet julehumøret frem bak *S*

ng tnt> Har du en tom linie i dit datasæt?
Avatar billede ng_tnt Nybegynder
21. december 2005 - 14:13 #7
Nej ingen tomme linier
Avatar billede bak Forsker
21. december 2005 - 14:24 #8
Hvis du kan finde ud af at køre en makro så er her er løsning
Marker det område du vil exportere (incl 2 ekstra) og kør så makroen


Sub ExportAsCSV()
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
Dim CSVFileName As String
If Selection Is Nothing Then
        MsgBox "ExportRange ikke defineret"
        Exit Sub
End If
lFno = FreeFile
lRows = Selection.Rows.Count
lCols = Selection.Columns.Count
CSVFileName = Application.GetSaveAsFilename
Open CSVFileName For Output As #lFno

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

End Sub
Avatar billede bak Forsker
21. december 2005 - 14:26 #9
Hansen -> jeg har allerede juleferie, så det er nok derfor.
Avatar billede ng_tnt Nybegynder
21. december 2005 - 14:27 #10
Tja - det ligner lidt den macro jeg fandt :

Sub ExportAsCSV()
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
Dim RangeToExport  As Range
Dim CSVfilename    As String
Dim ExtraCols      As Long

ExtraCols = 4
CSVfilename = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv")
Set RangeToExport = Range("A1", LastCell(ActiveSheet).Address)
Set RangeToExport = RangeToExport.Resize(, RangeToExport.Columns.Count + ExtraCols)
If RangeToExport Is Nothing Then
        MsgBox "ExportRange ikke defineret"
        Exit Sub
End If
lFno = FreeFile
lRows = RangeToExport.Rows.Count
lCols = RangeToExport.Columns.Count
Open CSVfilename For Output As #lFno

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

Function LastCell(ws As Worksheet) As Range
  Dim LastRow&, LastCol%
  On Error Resume Next
  With ws
    LastRow& = .Cells.Find(What:="*", _
      SearchDirection:=xlPrevious, _
      SearchOrder:=xlByRows).Row
    LastCol% = .Cells.Find(What:="*", _
      SearchDirection:=xlPrevious, _
      SearchOrder:=xlByColumns).Column

  End With
  Set LastCell = ws.Cells(LastRow&, LastCol%)
End Function

MEN BEDRE ER DET AT DET VIRKER - smid et svar begge

TUSIND TAK FOR HJÆLPEN !!! Og go' Jul og kanon Nytår !!!
Avatar billede bak Forsker
21. december 2005 - 14:30 #11
s'føli ligner den. :-)
Avatar billede b_hansen Novice
21. december 2005 - 14:31 #12
Nej, pointene skal da gå til bak, når han endnu engang kom med den bedste løsning. Det anede mig jo nok, at han kunne ryste noget ud af ærmet *S*

Og god juleferie bak
Avatar billede bak Forsker
21. december 2005 - 14:33 #13
fair at dele ?
og i lige måde, b_hansen og ng_tnt.
Avatar billede b_hansen Novice
21. december 2005 - 14:35 #14
Nej, jeg må insistere på, at det kun er bak, der får pointene, eftersom det var den rigtige løsning *S*
Avatar billede ng_tnt Nybegynder
21. december 2005 - 14:48 #15
De 23 sekunder gir også lidt ;-)
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