Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

FileCopy funkcija ne trazi potvrdu za replace

[es] :: Office :: Excel :: FileCopy funkcija ne trazi potvrdu za replace

[ Pregleda: 1845 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

neptuncokg
Predrag M
racunovodja
Kragujevac

Član broj: 230353
Poruke: 326
*.dynamic.isp.telekom.rs.



+9 Profil

icon FileCopy funkcija ne trazi potvrdu za replace16.08.2010. u 13:08 - pre 165 meseci
Za kopiranje fajlova iz "udaljenog" foldera koristim VBA-funkciju "FileCopy". To lepo radi, ali problem se javlja kad korisnik pogresi pri odluci da preuzme fajl, tj. kad se "predomisli". U standardnom windows kopiranju, kad vec postoji fajl pod istim imenom pojavi se "pitalica":
"Would you like to replace the existing file", gde korisnik izborom NO moze da odustane od kopiranja. Kod FileCopy funkcije, pitalica se ne pojavljuje, vec se kopiranje bezuslovno izvrsi. To povremeno napravi problem. Pokusao sam da stavim "Application.DisplayAlerts = True", ali nema uticaja. Evo procedure:

Sub ARJ2010()
a = "Y:\2010\2010.ARJ" 'lokacija odakle se kopira fajl
b = "E:\2010\2010.ARJ" 'loakcija gde se kopira fajl - pod istim imenom
Application.DisplayAlerts = True 'nema uticaja
FileCopy a, b
End Sub

Da li uopste postoji mogucnost da se kopiranje na ovaj nacin ipak ogranici? Hvala unapred.
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
194.106.170.*

Sajt: www.gowi.rs


+109 Profil

icon Re: FileCopy funkcija ne trazi potvrdu za replace17.08.2010. u 09:12 - pre 165 meseci
Ne znam da li postoji lakši način, ali je jedna mogućnost da ispitaš da li fajl već postoji pre nego što odradiš kopiranje i zavisno od toga prikažeš svoj dijalog za potvrdu. Rezultat dijaloga (šta je korisnik izabrao) koristiš da odrediš da li da se izvrši kopiranje ili ne.

Funkcija koja proverava da li fajl već postoji je dosta jednostavan i ja sam je preuzeo sa http://word.tips.net/Pages/T00...ermining_if_a_File_Exists.html

Code:
Function FileThere(FileName As String) As Boolean
    FileThere = (Dir(FileName) > "")
End Function


Sada to iskoristiš u svom kodu

Code:
Sub TestCopy()
Dim strSource As String, strDest As String
Dim Izbor As VbMsgBoxResult

strSource = "C:\Temp\Test1.zip" 'lokacija odakle se kopira fajl
strDest = "C:\Temp\Test2.zip"   'lokacija gde se kopira fajl

If FileThere(strDest) Then
   Izbor = MsgBox("Fajl " & strDest & " vec postoji.  Želite da ga obrišete?", vbOKCancel, "Potvrdi")
Else
   Izbor = vbOK
End If
If Izbor = vbOK Then
    FileCopy strSource, strDest
End If
End Sub

Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

neptuncokg
Predrag M
racunovodja
Kragujevac

Član broj: 230353
Poruke: 326
*.dynamic.isp.telekom.rs.



+9 Profil

icon Re: FileCopy funkcija ne trazi potvrdu za replace17.08.2010. u 16:00 - pre 165 meseci
Pokusacu da prilagodim svojoj proceduri. Hvala na odgovoru.Pozdrav
 
Odgovor na temu

neptuncokg
Predrag M
racunovodja
Kragujevac

Član broj: 230353
Poruke: 326
212.200.65.*



+9 Profil

icon Re: FileCopy funkcija ne trazi potvrdu za replace22.08.2010. u 19:56 - pre 165 meseci
Funkcija FileCopy odlicno funkcionise, a u mom slucaju posebno dobro, sa "pitalicom" o postojanju fajla koji se kopira. Iznenadjen sam cinjenicom da neki veci fajl, za cije kopiranje standardnom metodom Copy-Paste je potrebno npr. 10-ak sekundi, funkcija FileCopy to odradi za, recimo, 1 sekundu, ili manje (?!). Aforizam o Rembrantu, na kraju JPecinog posta me inspirisao na jos jedno pitanje iz oblasti komunikacije sa "udaljenim" fajlovima. Naime, ja u svojim aplikacijama stalno "komuniciram" sa bazama iz DOS-ovog knjigovodstvenog programa. Funkcijom FileCopy kopiram prethodno "ARJ"-ovan fajl iz nekog foldera (npr. sa "D:\2010.2010.arj") u rezervni folder na drugom disku (npr. "Y:\2010"). Klasicno arhivarivanje podataka. I tako nekoliko puta dnevno, iz preventivnih razloga. E, taj fajl koji kopiram (npr. 2010.arj) prethodno "spakujem", nekim arhiverom, a najcesce iz DOS-a, dos-ovom komandom: " arj a -r -jt -wc: D:\2010\2010 *.dbf *.ntx ". Ovom komandom "spakujem" sve dbf i ntx podatke iz foldera "2010" i svih njegovih pod-foldera u jedan fajl - 2010.arj. Tek onda primenim FileCopy. Moje pitanje, koje je mozda (?) pretenciozno za VBA bi bilo: Mogu li pre FileCopy da dodam neku proceduru koja bi odradila ovo moje "pakovanje" dalekog foldera "D:\2010" u fajl "2010.arj" ? Time bih znacajno smanjio setanje iz excela u DOS i obratno. Pozdrav.
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2267
194.106.170.*

Sajt: www.gowi.rs


+109 Profil

icon Re: FileCopy funkcija ne trazi potvrdu za replace23.08.2010. u 09:09 - pre 165 meseci
Da pozoveš dos komande iz VBA omogućava ti komanda shell. U tvom slučaju arhiviranje bi trebalo dase odradi sa
shell "arj a -r -jt -wc: D:\2010\2010 *.dbf *.ntx"

Kao parametar za Shell može da se zada tip prozora (vbNormalFocus, vbHide ...). Možeš i da vratiš vrednost i ispitaš da li je pakovanje uspešno završeno. Pogledaj primer u helpu
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

neptuncokg
Predrag M
racunovodja
Kragujevac

Član broj: 230353
Poruke: 326
212.200.65.*



+9 Profil

icon Re: FileCopy funkcija ne trazi potvrdu za replace23.08.2010. u 11:53 - pre 165 meseci
Funkcija Shell je pravo otkrovenje za mene. Kao i FileCopy, i ona neverovatno brzo izvrsava zadate operacije. Samo nesto da pojasnimo. Da bi se obavilo pakovanje nekog foldera, potrebno je prvo da se folder izabere. Ja sam to uradio sa Dir:
Dir ("e:\2010\BAZA\") 'otvaranje foldera koji se pakuje, pa onda pakovanje
Shell "arj a baza" 'pakovanje foldera u fajl "baza.arj"
E sad, novoformiran fajl "baza.arj" se automatski smesta u My Documents !!! Pokusam sa:
Sheel "arj a baza: D:\ARHIVA" - da bi se smestio u "D:\ARHIVA", ali bezuspesno. Onda se ne smesti nigde, jednostavno ga nema nigde na hardu. Nasuprot tome, iz prvobitnog primera - Shell "arj a -r -jt -wc: D:\2010\2010 *.dbf *.ntx" - novi fajl "2010.arj" je uredno smesten tamo gde treba, u "D:\2010".
U helpu nisam nasao primer za proveru uspesnosti procedure. Ima samo primer za pozivanje windowsovog kalkulatora. Hvala i pozdrav.
 
Odgovor na temu

[es] :: Office :: Excel :: FileCopy funkcija ne trazi potvrdu za replace

[ Pregleda: 1845 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.