21. december 2005 - 13:54Der 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.
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.
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 ???
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
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 !!!
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.