Bosna i Hercegovina



#1 13.02.2014-13:35
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Otvaranje i zatvaranje explorer prozora sa VBA
Ovo mi otvara folder, a kako ga zatvoriti ako je otvoren?

Function OtvoriFolder()
Dim Foldername As String
Foldername = "S:\"
Shell "C:\WINDOWS\explorer.exe """ & Foldername & "", vbNormalFocus
End Function
Pozdrav
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 15.02.2014-14:06 od strane pmiroslav. ↑  ↓

#2 13.02.2014-14:17
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
DownloadIzvorni kod (Visual Basic):
  1. Function ZatvoriProgram(Imeprograma)
  2. Dim WO As Object
  3. Dim ProcesO
  4. Set WO = GetObject("winmgmts:")
  5.     Set ProcesO = WO.execquery("SELECT * FROM win32_process WHERE Name = '" & Imeprograma & "'")
  6.     For Each ProcesO In ProcesO
  7.         ProcesO.Terminate
  8.     Next
  9. End Function

Pozdrav
↑  ↓

#3 13.02.2014-16:42
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
DownloadIzvorni kod (Visual Basic):
  1. Option Compare Database
  2. Option Explicit
  3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  5. Const WM_CLOSE = &H10
  6.  
  7. Function ZatvoripProgram()
  8. Dim winHwnd As Long
  9. Dim RetVal As Long
  10. winHwnd = FindWindow(vbNullString, "ImeFoldera")
  11. If winHwnd <> 0 Then
  12. PostMessage winHwnd, WM_CLOSE, 0&, 0&
  13. Else
  14. MsgBox "NIJE OTVOREN"
  15. End If
  16. End Function


Promijeni naslov
Pozdrav
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 13.02.2014-20:00 od strane zxz. ↑  ↓

#4 14.02.2014-08:09
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Re: Ili možda isto sa VBA
Nažalost neće da zatvori.
Napravio sam Autoexec makro koji
1. Pokrene Funkciju OtvoriFolder()
2. Otvori Form1
3. Pokrene Funkciju ZatvoriFolder()
    (Ovdje sam preimenovao onu tvoju ZatvoripProgram())
U zadnjoj akciji dobijem poruku "NIJE OTVOREN."

Ali da objasnim zašto mi ovo treba, možda ima bolje riješenje.
Kada pokrenem Front bazu koja ima linkane tablice sa drugog kompjutera često mi se pojavi poruka

'S:\' is not accessible

Zbog toga moram zatvoriti Access sa Ctri+Alt+Delete pa onda u exploreru ručno nači folder gdje su tablice i otvoriti ga da se inicijalizira, zatim se front baza otvori bez problema.
Zato bi želio da mi se po otvaranju to uradi automatski.

Prilozi:
Informacije o fajlu: rar  OtvoriFolder.rar
Preuzimanja: 68
Veličina: 30.68 KB


Pozdrav
↑  ↓

#5 14.02.2014-12:37
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
Kako vidim ti nisi dao ime foldera koji zatvara
winHwnd = FindWindow(vbNullString, ImeFoldera)
da kazemo da je ime foldera Baza, pa bi bilo
winHwnd = FindWindow(vbNullString, "Baza")

E sad sto se tice svega ukupno mislim d postoji bolji nacin.
Sta treba uraditi pri pokretanju app.
Prvo treba podici u rs. neku od linkovanih tabela i ukoliko se tu pojavi greska znaci da nisu linkovane tabele.
To bi bila prva procedura napr Provjera.
Druga procedura bi bila da se otvori dialog box za odabir putanje odnosno mdb gdje se nalaze podaci i tu vjerovatno imas u app.
To ti je ona Open File name.

Sada kada smo dobili novu putanju treba nam funkcija relink a mislim da ti i nju imas.
Ovo treba dozvoliti da se ponovi tri puta ukoliko se ne odabere prava baza te da poslije toga zatvori app.

Hajd pokusaj pa ako ne ide zajedno cemo to odraditi.
Pozdrav
↑  ↓

#6 14.02.2014-13:27
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Re: Ili možda isto sa VBA
Ovo drugo ću pokušati kasnije.
A kod prvog sam napisao
...
Dim ImeFoldera As String
ImeFoldera = "D:\"
winHwnd = FindWindow(vbNullString, ImeFoldera)
...
Voli bih da i ovo riješimo možda će trebati.
Pozdrav
↑  ↓

#7 14.02.2014-13:41
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
DownloadIzvorni kod (Visual Basic):
  1. Function ZatvoripFolder(ImeFoldera As String)
  2. Dim winHwnd As Long
  3. Dim RetVal As Long
  4. winHwnd = FindWindow(vbNullString, ImeFoldera)
  5. If winHwnd <> 0 Then
  6. PostMessage winHwnd, WM_CLOSE, 0&, 0&
  7. Else
  8. MsgBox "NIJE OTVOREN"
  9. End If
  10. End Function

Poziva se:
ZatvoripFolder ("Sys1 (D:)")

Znaci pozivas ga po imenu koje se nalazi na prozoru kada ga podignes.
Pozdrav
↑  ↓

#8 14.02.2014-14:00
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Re: Ili možda isto sa VBA
Prozor je kao na slici , a u Immediate sam napisao:

?ZatvoripFolder("Server on 'Zeljko'(Z:)")

i opet oda na MsgBox "NIJE OTVOREN"

PS
Evo sada mi je proradilo bio je štos u razmaku između 'Zeljko' i (Z:)

Ikona prilozene slike:
Image1.jpg
Tip fajla: Informacije o fajlu: jpg jpg
Preuzimanja: 65
Veličina: 90.86 KB
Veličina slike: 651 x 662 Pixels


Pozdrav
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 14.02.2014-14:07 od strane pmiroslav. ↑  ↓

#9 14.02.2014-19:19
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
Jeli sad ovo sve ok.
Ako jeste dobro bi bilo da postavis cio kod sa objasnjenjem.
Pozdrav
↑  ↓

#10 15.02.2014-07:58
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Re: Ili možda isto sa VBA
Pa evo ovako.
Kod je sliedeći_
DownloadIzvorni kod (vb.net):
  1. Option Compare Database
  2. Option Explicit
  3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4. Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  5. Const WM_CLOSE = &H10
  6.  
  7. Function OtvoriFolder()
  8. Dim ImeFoldera As String
  9. ImeFoldera = "D:"
  10.  
  11. Shell "C:\WINDOWS\explorer.exe """ & ImeFoldera & "", vbNormalFocus
  12.  
  13. End Function
  14.  
  15. Function ZatvoriFolder()
  16. Dim winHwnd As Long
  17. Dim RetVal As Long
  18. Dim ImeFoldera As String
  19. ImeFoldera = "D:"
  20. winHwnd = FindWindow(vbNullString, ImeFoldera)
  21. If winHwnd <> 0 Then
  22. PostMessage winHwnd, WM_CLOSE, 0&, 0&
  23. Else
  24. MsgBox "NIJE OTVOREN"
  25. End If
  26. End Function

Ovo sam spremio u jedan modul.
zatim sam napravo makor kojem sam dao ime Autoexec, tako da se pokrene pri otvaranju aplikacije.
Makro ima dvije naredbe
RunCode
Function Name: OtvoriFolder()
i
OpenForm
Form Name: npr. Login Forma

I sad na formi koja se prva otvara na OnClose napisao sam
Call ZatvoriFolder.

E sada opet dolazi problem. Na poslu sam na WindowsXP i sve radi OK, a sada sam kod kuće i tu imam Windows 7 i kada se podigne prozor na njemu ne piše ime kao u Win Xp.
Tako da opet neće da se zatvori.
Pozdrav
↑  ↓

#11 15.02.2014-08:24
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,722


Subject: Re: Ili možda isto sa VBA
Probaj sa ovom procedurom.
DownloadIzvorni kod (Visual Basic):
  1. Function ZatvoriF(ImeFoldera As String)
  2. Dim Sel
  3. Dim ApiSel
  4.  
  5. Set Sel = CreateObject("shell.application")
  6. For Each ApiSel In Sel.Windows
  7.     If ApiSel.Document.folder.self.Path = ImeFoldera Then ApiSel.Quit
  8. Next
  9. End Function

Pozdrav
↑  ↓

#12 15.02.2014-11:51
pmiroslav Offline
Clan
Registrovan/a od: 02.02.2009-10:32
Komentari: 1,354


Subject: Re: Ili možda isto sa VBA
Ovo je sada u redu!
Pozdrav
↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 19.07.2018-04:48.