Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-12-2002, 18:09   #1
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
problemi con FINDWINDOW

Chi sà spiegarmi perché, se ci sono altri file di excel aperti (ridotti a icona), questa sub non riesce ad aprire “cambi.xls”?
Se Excel non è in esecuzione tutto ok, su load della maschera di access viene aperto il file di excel e attivato il foglio “query web”, se “CAMBI.xls” è già aperto, ma solo lui!, esce dalla sub e carica direttamente la maschera.

Codice:
'In un modulo di access 2000'

Option Compare Database
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub excel()

Dim path
Dim MyXL
Dim hWnd As Long

hWnd = FindWindow(vbNullString, "Microsoft Excel - CAMBI.xls")

If hWnd = 0 Then '0 significa che il file di Excel non è in esecuzione.

Set MyXL = GetObject("C:\documenti\CAMBI.xls")
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
    MyXL.Sheets("query web").Activate
Set MyXL = Nothing

Else
 Exit Sub
End If

End Sub

'In una maschera di access'

Private Sub Form_Load()
 excel
End Sub
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:30   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non ho capito bene qual è il problema... Me lo potresti rispiegare ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:43   #3
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Questa sub mi serve per aprire CAMBI.xls da access all'apertura di una maschera, ma se ci sono altri file di excel aperti la sub non riesce ad aprire il file.
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:46   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quale ramo dell' If fa nel caso che sia già aperto un file di Excel ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:47   #5
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
La modifica è per togliere 2 dim che non c'entravano nulla.
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:50   #6
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Con questa riga vorrei controllare se CAMBI.xls è aperto :If hWnd = 0 Then '0 significa che "CAMBI.xls" non è in esecuzione.

Codice:
'In un modulo di access 2000' 

Option Compare Database 
Option Explicit 

Private Declare Function FindWindow Lib "user32" Alias _ 
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 

Sub excel() 

Dim path 
Dim MyXL 
Dim hWnd As Long 

hWnd = FindWindow(vbNullString, "Microsoft Excel - CAMBI.xls") 

If hWnd = 0 Then '0 significa che "CAMBI.xls" non è in esecuzione. 

Set MyXL = GetObject("C:\documenti\CAMBI.xls") 
    MyXL.Application.Visible = True 
    MyXL.Parent.Windows(1).Visible = True 
    MyXL.Sheets("query web").Activate 
Set MyXL = Nothing 

Else 
Exit Sub 
End If 

End Sub 

'In una maschera di access' 

Private Sub Form_Load() 
excel 
End Sub
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 18:55   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "CIUFFO"

Con questa riga vorrei controllare se CAMBI.xls è aperto :If hWnd = 0 Then '0 significa che "CAMBI.xls" non è in esecuzione.
Ok... ma che ramo dell'if ti fa nel caso che un altri documento xls sia aperto (che se ho capito è il caso in cui non ti viene aperto CAMBI.xls) ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-12-2002, 19:33   #8
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originally posted by "CIUFFO"

Questa sub mi serve per aprire CAMBI.xls da access all'apertura di una maschera, ma se ci sono altri file di excel aperti la sub non riesce ad aprire il file.

forse perchè devi portare cambi.xls in primo piano
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 10:23   #9
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Per misterX:
come lo porto in primo piano da VB?
Già c'è
Codice:
MyXL.Sheets("query web").Activate
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 10:27   #10
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Per Cionci

Non c'è un ramo dell'if per il caso che un'altro .xls sia aperto
L'if controlla solo se "CAMBI.xls" è già aperto ed esce dalla sub se è gia aperto altrimenti lo apre, solo che se ci sono altri .xls non ci riesce e non capisco perchè.
Ciao
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 19-12-2002, 16:09   #11
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
ho provato anch'io le API da te proposte, in effetti, se sul titolo della windows non compare per intero

"Microsoft Excel - Cartel1.xls"

la window non viene trovata

non sono un profondo conoscitore di VB ma per similitudine, ho idea che devi utilizzare ulteriori API del tipo

GetNextWindow() passandogli come handle

hwnd = FindWindow(0,"Microsoft Excel")

GetNextWindow(hwnd,GW_HWNDNEXT)


ma sicuramente in VB vi è un metodo più semplice

hai provato la FindWindowEx()?

a me purtroppo molte API sotto Excel non funzionano quindi non posso fare molte prove
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 09:22   #12
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Se metti un msgbox qualunque nella open del workbook del file .xls richiesto:
Codice:
Private Sub Workbook_Open()
MsgBox "ciao"
End Sub
Find windows apre il file .xls anche se ce ne sono altri aperti, ma una volta dato l'ok a msgbox excel dà il focus ad un'altro file .xls e quello richiesto che era apparso con l'msgbox sparisce!
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 09:26   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ma se è già aperto CAMBI.xls, ma non ha il focus, FindWindow te lo trova ?
In questo caso dovrebbe bastare usare nuovamente FindWindow per ottenere l'handle alla finestra di CAMBI.xls...poi gli setti il focus con l'API SetFocus...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 15:16   #14
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Se Cambi.xls è già aperto l'IF va su else ed esce dalla sub.
Io voglio aprire Cambi.xls solo se non è già aperto, solo che se ci sono altri .xls findwindows non ci riesce, ovvero, ci riesce ma una volta dato ok a msgbox sparisce.
se provi questo esempio capirai:
Codice:
'in un modulo
Option Compare Database
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub excel()
Dim path
Dim MyXL
Dim hwnd As Long

path = "c:\documenti\excel\Cartel1.xls"

hwnd = FindWindow(vbNullString, "Microsoft Excel - Cartel1.xls")

If hwnd = 0 Then ' 0 significa che il file di Excel non è in esecuzione.

Set MyXL = GetObject(path)

    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
   
Set MyXL = Nothing

Else
 Exit Sub
End If

End Sub

'in una maschera
Private Sub Form_Load()
excel
End Sub

'in Cartel1.xls

Private Sub Workbook_Open()
MsgBox "ciao"
End Sub
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 15:29   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originally posted by "CIUFFO"

Se Cambi.xls è già aperto l'IF va su else ed esce dalla sub.
Appunto... Guarda come lo modifico per rendere attivo CCAMBI.XLS

Codice:
'in un modulo
Option Compare Database
Option Explicit

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

Sub excel()
Dim path
Dim MyXL
Dim hwnd As Long

path = "c:\documenti\excel\Cartel1.xls"

hwnd = FindWindow(vbNullString, "Microsoft Excel - Cartel1.xls")

If hwnd = 0 Then ' 0 significa che il file di Excel non è in esecuzione.

Set MyXL = GetObject(path)

    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
   
Set MyXL = Nothing

hwnd = FindWindow(vbNullString, "Microsoft Excel - Cartel1.xls")
If hwnd <> 0 Then
SetForegroundWindow(hwnd)
SetFocus(hwnd)
End If

Else
 Exit Sub
End If

End Sub

'in una maschera
Private Sub Form_Load()
excel
End Sub

'in Cartel1.xls

Private Sub Workbook_Open()
MsgBox "ciao"
End Sub
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 18:30   #16
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Ho provato la tua modifica, ma non cambia nulla!
Dopo aver dato l'ok a msgbox cartel1 sparisce!
E poi hai messo:
Codice:
hwnd = FindWindow(vbNullString, "Microsoft Excel - Cartel1.xls") 
If hwnd <> 0 Then 
SetForegroundWindow(hwnd) 
SetFocus(hwnd) 
End If
Io devo dare il focus a Cartel1 dopo averlo aperto con getobject(path) e solo se non è già aperto.
E' chiaro che se è già aperto non devo aprirlo ancora.
La mia sub serve per aprire Cartel1 solo nel caso non sia già aperta.
Spero di essere stato chiaro.
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 19:11   #17
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
devi andare a cercarla la window con GetNextWindow()

ci sono in rete un sacco di esempi adatti allo scopo


prova una cosa del genere:

Codice:
  hwindow = FindWindow(vbNullString, "Microsoft Excel")

  if hwindow <> 0 then
    hwindow = FindWindowEx(hwindow, 0, "Cambi.xls", vbNullString)
  end if

  If hwindow = 0 Then msgbox "Cambi.xls non trovata"
  msgbox hwindow
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 19:14   #18
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
sob, doppio post
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 19:28   #19
CIUFFO
Member
 
L'Avatar di CIUFFO
 
Iscritto dal: Feb 2001
Città: Reggio Emilia
Messaggi: 230
Già provato, non funzia!
CIUFFO è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2002, 19:29   #20
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
hai provato enumerando le window?
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Dreamforce 2026: Salesforce punta sulla ...
SpaceX ha confermato che Flight 14 sar&a...
Googlebook pronto al debutto: Google apr...
Guida all'acquisto: quale lavapavimenti ...
Google Maps su Android Auto introduce fi...
AMD Ryzen 5 5500F: fino al 16% di presta...
L'ecosistema partner di Microsoft cresce...
Oracle registra un boom nella divisione ...
Amazon Prime Video sfida TikTok con le n...
L'uscita di Rayman Legends Retold &egrav...
Dazio UE sui pacchi extra UE, in Italia ...
La nuova lavatrice smart di Xiaomi ha tr...
Hai una PSP nel cassetto? Questo nuovo p...
Oracle presenta Java 27 con diverse novi...
Il microscopio dell'EPFL vede più...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v