[ veronika @ 18.01.2007. 11:41 ] @
Trebam da uradim istu stvar sto radi i Data->Import External Data->Edit Text Import, da bih uvezla file koji svakog dana ima drugu extenziju:
UT4.1
.
.
.
UT4.n
n je vrednost koja se uzima sa forme.
Napravim macro koji npr uveze file UT4.133 ali kada u VBA to pokusam da iskorigujem tako da file koji treba da otvori bude "X:\labi\K96_2005\K96\IZVESTAJ\" & [Forms]![UserForm1]![TxtBox1]
dobijem 1004 gresku.

Sub LABOR()
'Dim GetFileName
' LABOR Macro
' Macro recorded 17.1.2007 by anamarija
'
'
With Selection.QueryTable
.Connection = "TEXT;" & "X:\labi\K96_2005\K96\IZVESTAJ\" & [Forms]![UserForm1]![TxtBox1]
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileFixedColumnWidths = Array(1)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
'.Filename = GetFileName()
End With
Sheets("pg 1").Select
ActiveWindow.SmallScroll Down:=42
End Sub
Da li postoji neko jednostavnije resenje da se napravi ovakav uvoz file-a?
[ Jpeca @ 18.01.2007. 18:09 ] @
Ne vidim gde pozivaš formu u koju unosiš broj n u text box?
Umesto da kreiraš sopstvenu formu za to i uz to događaje OK, Cancel... jednostavnije je da pozoveš InputBox u koju uneseš n
Code:

Dim strn As String 
strn = Application.InputBox( prompt:="Unesi estenziju fajla" )


Onda možeš da to iskoristiš u With bloku
Code:

.Connection = "TEXT;" & "X:\labi\K96_2005\K96\IZVESTAJ\" & strn 


Naravno, pošto je ovaj kod sniman može da se dosta pojednostavi izbacivanjem dodele podrazumevanih vrednosti, ali ako radi posao ne treba preterivati.
[ veronika @ 27.01.2007. 07:31 ] @
Radi! Hvala puno! Ali ako bih ja sa forme zelela da uzmem podatak, to ne mogu da izvedem. Jer ovo je samo jedna makro, koji radi jedan deo posla, medjutimi na toj pocetnickoj formi trebalo bi da bude jos nekih stvari koje bi korisnik trebao da unese i jednom koraku da ceo taj dnevni izvestaj popuni podacima. Korisniku bi najvise odgovaralo da se u jednom prozoru znaci na jednoj formi to sve odradi, znaci da tamo unese sve podatke pa ja odatle da to pokupim, izracunam sta treba i jos da broj koji unese kao "n" bude na formi pa da i to preuzmem i sa time uradim gornje.
[ Jpeca @ 29.01.2007. 13:03 ] @
Da preuzmeš podatak sa korisničke forme najlakše je da formi dodaš dugme OK i onda na događaj klik dugmeta OK uradiš sa tim podacima šta ti treba.
Sadržaju textboxa pristupaš koristeći Me.ImeKontrole.Value

U priloženom primeru formirana je jednostavna forma (frmTest) sa jednim text boxom (txtUnos) i dva dugmeta (cmdOK i cmdCancel). Forma se otvara tako što se pokrene makro OtvoriFormu u okviru Modula1.
Code:

Sub OtvoriFormu()
 Load frmTest
 frmTest.Show
End Sub


Na osnovu unetog teksta u polje txtUnos kad se klikne na dugme OK ispisuje se pozdravna poruku i prepisuje uneti tekst u ćeliju A1. Glavni događaj na formi klik na OK obrađuje se sledećim kodom (Obrati pažnju da je ovaj kod u okviru forme - a ne modula):
Code:

Private Sub cmdOK_Click()
    MsgBox "Zdravo " & Me.txtUnos.Text ' Pozdravna poruka
    ActiveSheet.Range("A1").Value = Me.txtUnos.Text 'Upis u celiju
    Unload Me ' Zatvara formu
End Sub