[ prunto @ 03.09.2010. 11:36 ] @
Pozz...
Na C:\ disku mi se nalazi fajl EX2010-09-03_901_ZB_012345.DBF. Da napomenem da se datumski deo menja zavisno od datuma i numericki deo je uvek drugaciji jer ga program pravi proizvoljno.
Sad meni je potrebno da taj fajl skratim na oblik EX2010-09-03_901_ZB.DBF i da ga takvog dobijem na D:\test\
Svaka pomoc dobro dosla
Hvala
[ Aleksandar Vasic @ 03.09.2010. 13:01 ] @
Mislim da bi moglo nesto ovako:

Odredis poziciju "ZB" u imenu fajla
Code:
lngPos= InStr(FILENAME, "ZB")


zatim sa Mid() izvuces prvi deo imena fajla

Code:
strSubstr = Mid$(FILENAME, 0, lngPos + 1)


dakle ovim dobijas prvi deo imena fajla, s tim sto lngPos uvecamo za 1, jer ce se sa InStr dobiti index slova Z

onda na strSubstr dodas ".dbf" kao i adresu gde hoces da je smestis

Code:
strSubstr = "x:\dir\" & strSubstr & ".dbf"


onda koristis FileCopy

Code:
FileCopy adresa_originalnog_fajla, strSubstr


ako je nejasno, pitaj :)

ovo je prvo sto mi je palo na pamet, mozda ce neko od kolega smisliti nesto prostije :)
[ prunto @ 03.09.2010. 13:15 ] @
Nisam razumeo..jer mozes da postujes kod da probam tako?
Ja cu svaki dan imati min. 30 tih fajlova,i razlikovace se samo u onom broju 901 jer idu od 901-930,i u proizvoljnom broju na kraju fajla.
[ Srđan Pavlović @ 03.09.2010. 13:20 ] @
Sta konkretno nisi razumeo? Kako mislis da postuje kod - covek ti je vec postovao kod, i pri tome objasnio sta radi u svakom koraku :)
[ Aleksandar Vasic @ 03.09.2010. 13:45 ] @
Upravo to :)

ako mislis kompletan kôd, ne mogu jer ne znam ni kako ni odaklevuces imena tih fajlova...u principu samo ovaj gore kôd sklopis i dobijas to sto zelis,
a ako vec hoces da ti neko uradi kompletan kôd onda je to za berzu poslova :)
[ prunto @ 03.09.2010. 14:30 ] @
ne razumem kako da ga iskombinujem,gde da stavim putanje,kako da deklarisem?
U punom formatu mi fajlovi dolaze na C\TT\ a u skracenom mi trebaju na D:\test\

[Ovu poruku je menjao prunto dana 03.09.2010. u 15:49 GMT+1]
[ prunto @ 04.09.2010. 08:57 ] @
u delu ***strSubstr = Mid$(sName, 0, lngPos + 1)*** javlja gresku,koja glasi :

Run-time erroe 5
Invalid procedure call or argument






uneti kod:


*******************************************
Private Sub Command1_Click()
sName = "C:\EX" & Year(Date) & "-" & "0" & Month(Date) & "-" & Day(Date) & "_" & "901" & "_" & "ZB" & "_" & ".DBF"
lngPos = InStr(sName, "ZB")
strSubstr = Mid$(sName, 0, lngPos + 1)
strSubstr = "C:\dir\" & strSubstr & ".dbf"
FileCopy sName, strSubstr
End Sub
*******************************************
[ loto17 @ 04.09.2010. 11:04 ] @
Probaj ovako:

Private Sub Command1_Click()
sName = "C:\EX" & Year(Date) & "-" & "0" & Month(Date) & "-" & Day(Date) & "_" & "901" & "_" & "ZB" & "_" & ".DBF"
lngPos = InStr(sName, "ZB")
If Len(sName) - 1 > 0 then
strSubstr = Mid$(sName, 0, lngPos + 1)
strSubstr = "C:\dir\" & strSubstr & ".dbf"
FileCopy sName, strSubstr
Endif
End Sub

[ prunto @ 04.09.2010. 11:44 ] @
na istoj liniji koda vraca gresku.

Ja primam odprilike 20-40 fajlova formata :
EX2010-08-06_901_ZA_0156878.dbf sa tim sto se numericki deo menja i nikad nije isti,kao i deo 901,koji ide do 930.
Trebam te fajlove koji dodju da prebacim na D:\Test\ u obliku ZA90101,ZA90201 itd...
Svak pomoc mi mnogo znaci.
Ja sam probao preko

If Dir("Fajl") <> "" Then
FlieCopy "Putanja" , "D:\Test\ZA90101.Dbf"
End If

ali ne znam kako da deklarise numericki deo u putanji.
[ Aleksandar Vasic @ 04.09.2010. 15:29 ] @
ovako od oka bi rekao da moras da deklarises lngPos

Code:
Dim lngPos as Long


Mislim da Mid() nece da prihvati lngPos, jer ako ne deklarises onda je tipa Variant, ispravite me ako gresim?

P.S. Zamolio bih vas da koristite CODE tagove
[ loto17 @ 04.09.2010. 16:42 ] @
Evo kompletnog resenja!
Program radi jedino ako se ukljuci referenca: Microsoft Scripting Library
Pritiskom na komandno dugme program ce pronaci sve fajlove na C:\ disku koji pocinju na "EX" , u nazivu sadrze "ZB" i zavrsavaju se sa ".DBF"
Sve sto zadovoljava gornji uslov bice premesteno (move) u novi folder D:\Test\ pod nazivom "ZA"+(901 ili sta vec)+ brojac( redni broj fajla koji se presnimava) + DBF ekstenzija.



[Ovu poruku je menjao loto17 dana 04.09.2010. u 18:01 GMT+1]
[ izonic @ 18.09.2010. 23:04 ] @
Code:
Public Function KopirajFajlove() As Variant
'**************************************************
'Ime:      KopirajFajlove   (Function)
'Sadržaj: koira dbf fajlove pod drugim imenom
'Autor:     ZXZ
'Datum:      09 18, 2010, 11:58:27
'Adresa: Tuzla BiH
'Email:     [email protected]
'Ulazni parametri:mogu biti putanjaOrg i Putanjas
'Izlazni parametri:Nema
'**************************************************
On Error GoTo Greska
Dim ImeOrginal As String
Dim ImeN As String
Dim PutanjaOrg As String
Dim PutanjaS As String
Dim i As Integer

PutanjaOrg = ("C:\")
PutanjaS = "d:\temp\"
ImeOrginal = Dir(PutanjaOrg, vbDirectory)
Do While ImeOrginal <> ""
    ImeOrginal = Dir
    If Left(ImeOrginal, 2) = "EX" And Right(ImeOrginal, 3) = "DBF" Then
     i = InStr(1, ImeOrginal, "ZB")
     ImeN = Left(ImeOrginal, i + 1) & Right(ImeOrginal, 4)
     FileCopy PutanjaOrg & ImeOrginal, PutanjaS & ImeN
    End If
Loop
Izlaz:
Exit Function
Greska:
'GreskaB (Err.Number)
Rem treba presresti greska
Resume Izlaz
Kraj:

End Function

[ loto17 @ 20.09.2010. 17:49 ] @
@izonic
Tvoja funkcija ne valja!!!
Od svih fajlova koji se nalaze na C:\, pocinju na "EX" , zavrsavaju se na ".DBF" u D:\Test bice presnimljen samo jedan fajl pod nazivom "E.DBF"
Moje resenje je ispravno!!!
[ izonic @ 20.09.2010. 21:57 ] @
Da u pravu si u d:\test nece kopirati nista jer ja sam naveo putanj d:\temp.
PutanjaS = "d:\temp\"
A mozda i ovjde nece kopirati nista.
Mozda nam vb nije isti.
[ loto17 @ 21.09.2010. 10:18 ] @
@izonic
U postu sam pogresno naveo putanju D:\Test umesto D:\Temp ali sam probao tvoju funkciju i video da ona radi onako kako sam i napisao- Pogresno!!!