View Full Version : VBA semplice
Con uno script presente in "script.xls" apro un file "dati.xls" dal quale prelevo alcuni dati e li deposito inel foglio del file "script.xls"
i miei desideri sono:
a) quando apro "script.xls" e lancio il suo script, "dati.xls" non deve essere visibile all'utente
b) se manipolo "script.xls" non mi deve venire chiesto se intendo salvare le modifiche in quanto "script.xls" è un foglio di lavoro che uso solo per visualizzare dati particolari presenti in altri fogli di lavoro
grazie e buone vacanze :)
octopus_71
30-07-2003, 12:23
allora:
1) aggiungi <Nome_applicazione>.Visible = False
2) aggiungi <Nome_applicazione>.displayAlerts = False
dove <Nome_applicazione> è l'oggetto Application che punta al file "dati.xls" che hai aperto
ciao
innazitutto grazie per le dritte; ho provato con un:
Application.Visible = False
ed al termine......
Application.Visible = True
ma non è quello che cercavo in quanto viene:
a) mostrata la finestra di Excel (il programma)
b) letta quindi la linea della macro Application.Visible = False, nascosto completamente Excel (programma + foglio di lavoro)
ed al termine rivisualizzato il tutto con un effetto poco professionale purtroppo
sarebbe bello poter caricare un foglio di lavoro Hidden
Poi, ho provato ThisWorkbooks.Saved = True per evitare la richiesta di salvataggio e funziona solo se il foglio di excel non viene aperto in una finestra di Internet Explorer
che casotto !!!
octopus_71
31-07-2003, 09:11
dunque, per il primo punto ti scrivo il codice che io utilizzo generalmente.
Set dati = New Excel.Application
dati.Workbooks.Open <path\nome_file>
dati.Visible = False
dati.ScreenUpdating = False
... operazioni sull'applicazione "dati"
Questo codice non mi apre nessuna finestra, tutto viene eseguito in background.
Per il secondo punto non ho esperienza di Internet Explorer, però anch'io utilizzo la proprietà Saved ma per poter chiudere il foglio di lavoro senza che mi mostri la finestra di salvataggio.
Piuttosto non è che hai esperienza di Functions su Excel?
ho letto del tuo problema ma non ho mai richiamato Function o Sub in celle di Excel
octopus_71
31-07-2003, 12:25
almeno tu hai risolto?
purtroppo non come dico io :(
octopus_71
31-07-2003, 13:08
Mi dispiace. Comunque anche io faccio qualcosa che è simile a ciò che stai facendo tu. In pratica apro un file Excel (apro l'applicazione ed il foglio contemporaneamente), vi carico i dati dal db, lo salvo e lo chiudo senza che però venga mostrato alcunché a video (si tratta di un processo in background). Per questo non capisco come mai da te non funzioni...
:(
aspetta, il mio è un lavoro leggermente diverso
Il file (A) che apre l'utente, contiene uno script VBA.
Quando il file (A) viene aperto, apre un file (B) dal quale (A) eredita alcuni dati contenuti in (B) e li mostra all'utente.
Tradotto in pratica:
a) apro il file A che contiene la macro
b) viene eseguita la macro A
c) la macro apre il file B (sarebbe meglio se in background ma non mi riesce)
d) durante il processo, alcuni dati del file B finiscono nel file A
e) il file B si chiude senza chiedere niente all'utente
f) il file A rimane aperto di modo che l'utente ne vede il risultato
g) essendo ora stato modificato il file A dalla macro, Excel quando l'utente chiude il file A, chiede se salvare o meno il file in quanto è stato modificato (questo almeno in parte è stato risolto)
il punto (c) è il più balordo in quanto se nascondo il foglio, la macro non riesce a trovare i dati in esso contenuti
mah.....
octopus_71
31-07-2003, 15:08
vediamo i punti:
c) hai provato a mettere prima dati.Visible = False poi dati.Workbooks.Open <> ed infine dati.ScreenUpdating = False?
e, g) ho fatto così:
dati.Windows("<Finestra_da_chiudere>").Close False
fammi sapere
le ho provate un pò di tutte e penso che il mio problema stia nel far parlare le due Application
miofile = "dati.xls"
Set dati = New Excel.Application
dati.Visible = False
dati.Workbooks.Open miofile
For n = 1 To Sheets.Count
Set mf = Worksheets(Sheets(n).Name)
questa :rolleyes: dovrebbe essere l'Applicazione che contiene i dati da prelevare e spedire all'altro foglio ma con molta probabilità la dichiarazione è errata: mf non ritorna nulla
octopus_71
01-08-2003, 11:18
scusa ma non capisco bene questa istruzione:
Set mf = Worksheets(Sheets(n).Name)
sia worksheets che Sheets si riferiscono allo stesso workbook?
beh, si in quanto un semplice
Set mf = Sheets(n).Name
non è sufficiente
octopus_71
01-08-2003, 14:33
certo, ma dovrebbe essere:
Set mf = ActiveWorkBook.Worksheets(WorkBooks("<l'altro>").Sheets(n).Name))
o qualcosa del genere, ma forse non ho capito ciò che vuoi fare :confused: .
cmq non ti posso aiutare in altro modo :rolleyes: , se ho qualche idea ti faccio sapere
ciao
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.