Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

attivare worksheet tramite variabile

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

attivare worksheet tramite variabile

Postdi mirmidone21 » 31/07/17 13:23

buongiorno a tutti
come da oggetto, vorrei far in modo di attivare un foglio excel assegnandogli una variabile, per evitare di dover riportarlo nella macro ogni volta, ma solo una volta quando dichiaro la variabile.
ho creato le variabili e le ho dichiarate, ma se vado a sostituirle al nome completo del file, va in debug
cioè, per spiegarmi bene, se al posto di
Windows("gestione 05-2017.xlsx").Activate
scrivo Windows("wks1.xlsx").Activate
non funziona e va in errore.
la stessa cosa in quest'altra istruzione
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'[Resoconto 05-2017.xlsx]Table11'!C3:C8,6,0)"

ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'[wks2.xlsx]Table11'!C3:C8,6,0)"

questa è la macro


Codice: Seleziona tutto
Sub CIR_NUOVO()
'
' Macro1 Macro
' <<<<<<<<<<<<<<<<<<<<<<< ricordati di cambiare il nome file col mese corrente
'
    Dim wks1 As String
    Dim wks2 As String
    wks1 = "C:\gestione 05-2017.xlsx"
    wks2 = "C:\resoconto 05-2017.xlsx"
   
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.NumberFormat = "General"
    Range("C2").Select
    Workbooks.Open Filename:=wks2, ReadOnly:=False
    Windows("gestione 05-2017.xlsx").Activate
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[Resoconto 05-2017.xlsx]Table11'!C3:C8,6,0)"
    Range("C2").Copy Destination:=Range("C2:C" & Range("B" & Rows.Count).End(xlUp).Row)
    Cells.Select
    Cells.EntireColumn.AutoFit
    Selection.AutoFilter
    Range("C2").Select
    ActiveSheet.Range("A:Q").AutoFilter Field:=3, Criteria1:= _
        "VIO - CIR cliente irreperibile"
    ActiveSheet.Range("A:Q").AutoFilter Field:=12, Criteria1:="<>"
    Cells.Select
    Range("J1").Activate
    Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.Copy
    Workbooks.Add
    Windows("gestione 05-2017.xlsx").Activate
    Windows("Cartel1").Activate
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Cells.Select
    Cells.EntireColumn.AutoFit
    Columns("C:C").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("L:O").Select
    Selection.Delete Shift:=xlToLeft
    Windows("gestione 05-2017.xlsx").Activate
    ActiveWindow.Close SaveChanges:=False
    Range("A2").Select
    MsgBox ("Tutto Completato.....")
End Sub

Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 138
Iscritto il: 26/10/15 16:48

Sponsor
 

Re: attivare worksheet tramite variabile

Postdi Anthony47 » 01/08/17 00:12

Cominciamo col dire che tu devi gestire una variabile con la directory ("C:\", nel tuo caso) e una variabile col nome del file ("resoconto 05-2017.xlsx", nel tuo caso).
Quindi
Codice: Seleziona tutto
myPerc = "C:\"
myFile1 = "resoconto 05-2017.xlsx"

Per la Open userai il concatenamento tra le due:
Codice: Seleziona tutto
Workbooks.Open Filename:=(myPerc & myFile1), ReadOnly:=False


Per la Windows Activate userai invece il solo nome file:
Codice: Seleziona tutto
Windows(myFile1).Activate


Nelle formule puoi usare sia il solo nome file (se il file e' aperto, pero'!) che il Percorso & Nome, pero' devi stare attento a ricreare la stringa che ti serve.
Ad esempio l'istruzione
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'[Resoconto 05-2017.xlsx]Table11'!C3:C8,6,0)"
puo' diventare
Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[" & myFile1 & "]Table11'!C3:C8,6,0)"


Ma va bene anche
Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[-1],'[" & myPerc & myFile1 & "]Table11'!C3:C8,6,0)"


Spero che sia un po' piu' chiaro...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18130
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: attivare worksheet tramite variabile

Postdi mirmidone21 » 01/08/17 11:56

grazie Anthony, tutto chiarissimo, testato e funzionante.
solo una curiosità didattica, ma perchè se usavo la variabile Windows(wks1).Activate, non funzionava e andava in debug ??
cosa sbagliavo
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 138
Iscritto il: 26/10/15 16:48

Re: attivare worksheet tramite variabile

Postdi alfrimpa » 01/08/17 13:38

Forse perchè manca l'estensione?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: attivare worksheet tramite variabile

Postdi Anthony47 » 01/08/17 14:49

mirmidone21 ha scritto:scrivo Windows("wks1.xlsx").Activate
non funziona e va in errore

Questo era il tuo codice. In questa tua istruzione tu non usavi la variabile wks1, ma la stringa "wks1.xlsx"; e se anche avessi usato la variabile wks1 essa era compilata con un valore che non corrispondeva al solo Nome file, ma a Percorso & Nome.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18130
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: attivare worksheet tramite variabile

Postdi mirmidone21 » 01/08/17 15:46

grazie, ora mi è chiaro
nell'istruzione Windows("......").Activate posso usare solo una variabile che identifica il file, e non l'intero percorso.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 138
Iscritto il: 26/10/15 16:48

Re: attivare worksheet tramite variabile

Postdi Anthony47 » 01/08/17 22:16

grazie, ora mi è chiaro
nell'istruzione Windows("......").Activate posso usare solo una variabile che identifica il file, e non l'intero percorso

Eh no, allora non hai capito... Se scrivi Windows("......").Activate cioe' che finisce tra Virgolette e' interpretato come una stringa, non come una Variabile.
Quindi:
Codice: Seleziona tutto
'Primo modo:
Windows("NomeDellaFinestraDaAttivare").Activate
'OPPURE, secondo modo:
Windows(VariabileContenenteIlNomeDellaFinestraDaAttivare).Activate

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18130
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: attivare worksheet tramite variabile

Postdi mirmidone21 » 02/08/17 08:05

ok chiarissimo, e gentilissimo come sempre, alla prossima.
grazie
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 138
Iscritto il: 26/10/15 16:48


Torna a Applicazioni Office Windows


Topic correlati a "attivare worksheet tramite variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti