» »

Excel VBA - izvoz izbire filtrov v txt

Excel VBA - izvoz izbire filtrov v txt

znbojan ::

(prvič delam z VBA, verjetno pa je rešitev trivialna...)
Želja je, da se v v List1 izberejo podatki po željenih filtrih in se potem "izbor" izvozi (shrani) npr. v txt datoteko.
Skripta je narejena tako, da se izbor prepiše v izvoz, potem pa se naredi txt datoteka (avtomatsko se prepisuje; brez vprašanja).

Deluje, samo za "določene" izbore dobim v txt datoteki po zadnji vrstici pravih podatkov lahko še nekaj vrstic ### (# = izbran tip separatorja).

Kako se znebiti teh dodatnih vrstic #?

Link s xls tabelo in skripto: https://drive.google.com/open?id=1EwDci...

Skripta:
Sub ExceltoTXT()
'spremenljivke nastavitev
Dim FileName, sLine, Deliminator As String
Dim LastCol, LastRow, FileNumber As Integer
'brisi izvoz na zacetku
Sheets("izvoz").Select
Cells.Select
Selection.ClearContents
'kopiraj dinamicno obmocje()
Worksheets("List1").Range("A1").CurrentRegion.Copy Worksheets("izvoz").Range("A1")
'Mesto Excel datoteke in ime izvozne datoteke
FileName = ThisWorkbook.Path & "\izvoz-txt.txt"
'Separator med polji
Deliminator = "#"
'dolocitev zadnje celice ???
LastCol = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
FileNumber = FreeFile
'izdelava oz prepisovanje obstojece tekstovne datoteke
Open FileName For Output As FileNumber
'branje podatkov s FOR zanko
For i = 1 To LastRow
For j = 1 To LastCol
'odstrani separator ce zapisuje zadnji stolpec
If j = LastCol Then
sLine = sLine & Cells(i, j).Value
Else
sLine = sLine & Cells(i, j).Value & Deliminator
End If
Next j
'zapisovanje podatkov v tekstovno datoteko
Print #FileNumber, sLine
sLine = ""
Next i
'zapiranje tekst datoteke
Close #FileNumber
'pojavno okno na zaslonu
MsgBox "Izvoz je narejen"
'preusmeritev v prvotni list
Range("F12").Select
Sheets("List1").Select
Range("D5").Select
End Sub
znbojan
  • spremenil: znbojan ()

prtenjam ::

Pozdravljeni,

Nisem šel gledat makra, vendar je rešitev dokaj preprosta neglede na to, kaj v makru počnete. Če v izhodni datoteki ne želite praznih vrstic, torej vrstic z vsebino "###" (ali pač kolikor znakov vam izpiše), tega pač ne zapišite v datoteko. Torej z IF stavkom preverite kaj zapisujete in če ni OK, ne zapišite:
  If sLine <> "###" Then
    Print #FileNumber, sLine
  End If
Matjaž Prtenjak
https://mnet.si

znbojan ::

Pozdravljeni,
hvala. Deluje.

ps. glede kode mi ni čisto jasno zakaj, ampak
če imam npr. 5 stolpcev, potem moram dati v if stavek 4x # => vedno enega manj kot je število stolpec v tabeli!
znbojan

prtenjam ::

Kot rečeno, nisem gledal makra; ker če nič drugega je popolnoma neporavnan in ga je zelo težko brati :).

Skepam pa, da v zanki potujete po kolonah in med elementi vstavljate znak '#'. Če je torej elementov N je znakov med njimi N - 1, zato je znakov za eden manj kot kolon.
Matjaž Prtenjak
https://mnet.si

znbojan ::

Hvala za razlago - bo držalo in mi je jasno.

Se opravičjem za copy /paste takšne kode. Sem dal link s primerom kjer je vidna lepše kode.
znbojan


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Excel: tiskanje po vrsticah

Oddelek: Pomoč in nasveti
7961 (874) luksorzi
»

rabib vba kodo za shranjevanje v bin (iz excella)

Oddelek: Programiranje
7823 (605) Silikon
»

Calc/excel delo s tabelo

Oddelek: Programiranje
131373 (1140) salabajs
»

excel+visual basic

Oddelek: Pomoč in nasveti
101479 (1366) švrk
»

Visual Basic in Excel

Oddelek: Programiranje
262529 (2095) Vesoljc

Več podobnih tem