Allora l'oggetto avrebbe dovuto essere:
Copiare i fogli di lavoro tra Workbooks
;-)
Poi c'e` il problema dell'ambiguita` del termine "cartella": "cartella" nel
senso di directory o di "cartella di lavoro" di Excel?
> Come macro funziona, e funziona anche se dall'interno del codice premo F8
ed eseguo le istruzioni.
> Se però lancio la sub da un cmdCommand1 mi da l'errore run time 1004
"Errore nel metodo Copy per la classe Worksheet."
> non riesco proprio a trovare il modo.
> qualcuno può aiutarmi ?
E` probabilmente un problema di "focus". Quando fai clic sul pulsante e`
l'oggetto pulsante che ha il fuoco, non il foglio di lavoro, quindi le tue
istruzioni che si riferiscono all'oggetto attivo potrebbero riferirsi al
pulsante. Metti come prima istruzione della procedura qualcosa del tipo:
Range("A1").Select
Ma potrebbe anche essere altro. Sai com'e`... senza vedere il codice si
possono solo fare ipotesi.
--
Ciao.
Maurizio
--------
?SPQR(C)
X
--------
nomefoglio = ActiveSheet.Name
Workbooks.Open
FileName:="C:\WINDOWS\Desktop\Fatture\Fatture.xls"
Windows("ft.xls").Activate
Sheets(nomefoglio).Select
Windows("Fatture.xls").Activate
Workbooks("Ft.xls").Sheets(nomefoglio).Copy Before:=Workbooks _
("Fatture.xls").Sheets(1)
ActiveWorkbook.Save
ActiveWorkbook.Close
Sheets("Avvio").Select
End Sub
Spero di essere stato piů chiaro.
Grazie per la risposta
ciao Pietro
Maurizio Borrelli <maurizio...@tin.it> wrote in message
ODxoflDpAHA.1552@tkmsftngp04...
> > cp...@libero.it:
> > Non riesco a copiare i fogli da una cartella all'altra.
>
> Allora l'oggetto avrebbe dovuto essere:
>
> Copiare i fogli di lavoro tra Workbooks
>
> ;-)
>
> Poi c'e` il problema dell'ambiguita` del termine "cartella": "cartella"
nel
> senso di directory o di "cartella di lavoro" di Excel?
>
> > Come macro funziona, e funziona anche se dall'interno del codice premo
F8
> ed eseguo le istruzioni.
> > Se perň lancio la sub da un cmdCommand1 mi da l'errore run time 1004
> "Errore nel metodo Copy per la classe Worksheet."
> > non riesco proprio a trovare il modo.
> > qualcuno puň aiutarmi ?
*Spostare* o *copiare*?!? ;-) Finora si era parlato di copiare...
> la fattura stessa in un'altro workbook di archiviazione.
> Ed è qui che, quando clicco il button cmdConferma posto nel foglio di
lavoro della fattura mi da l'errore.
> La routine situata in modulo1.bas
E adesso da dove salta fuori "modulo1.bas"? Stai lavorando col Visual Basic
di Excel o con Visual Basic e basta?
> che esegue quando clicco è questa:
> Public Sub confermaDocumento()
> nomefoglio = ActiveSheet.Name
> Workbooks.Open FileName:="C:\WINDOWS\Desktop\Fatture\Fatture.xls"
> Windows("ft.xls").Activate
> Sheets(nomefoglio).Select
> Windows("Fatture.xls").Activate
> Workbooks("Ft.xls").Sheets(nomefoglio).Copy Before:=Workbooks _
> ("Fatture.xls").Sheets(1)
> ActiveWorkbook.Save
> ActiveWorkbook.Close
> Sheets("Avvio").Select
> End Sub
Potresti anche limitarti alle sole istruzioni necessarie. Per esempio:
Option Explicit
Public Sub confermaDocumento()
Dim nomefoglio As String
nomefoglio = ActiveSheet.Name
With Workbooks.Open(FileName:="C:\WINDOWS\Desktop\Fatture\Fatture.xls")
Workbooks("Ft.xls").Sheets(nomefoglio).Copy Before:=.Sheets(1)
.Close SaveChanges:=True
End With
Sheets("Avvio").Select
End Sub
ma, a parte questo, non riesco ad immaginare perche' il tuo codice non
funzioni. Ancora una volta, pero`, hai tralasciato di informarci sulla
questione importante: affermi che tutto funziona finche' non lanci la
procedura per mezzo di un pulsante. Dovresti quindi spendere qualche parola
in piu` su questo pulsante. Di che pulsante si tratta? Di un "Pulsante di
comando" della barra "Casella degli strumenti" o di un "Pulsante" della
barra "Moduli"?
Nel primo caso dovresti avere anche una procedura-evento del tipo:
Option Explicit
Private Sub CommandButton1_Click()
confermaDocumento
End Sub
posta nel modulo del foglio che ospita tale pulsante.
Nel secondo caso, invece, avrai assegnato al pulsante la macro
"confermaDocumento".
Io ho testato entrambe le soluzioni e non ho riscontrato nessun errore. Dove
si trova il pulsante? Ha caratteristiche particolari?
Inoltre da come scrivi il codice ho il sospetto che tu non usi "Option
Explicit". Consulta la guida in proposito.
Mi dispiace, non mi viene in mente altro.
- Creare una nuova cartella.
- Inserirci un pulsante dalla 'casella degli strumenti'
- Programmare l'evento click con il codice che mi hai passato :
Private Sub CommandButton1_Click()
Dim nomefoglio As String
nomefoglio = ActiveSheet.Name
With Workbooks.Open(FileName:="C:\Fatture\Ft2001.xls")
Workbooks("Cartel1").Sheets(nomefoglio).Copy Before:=.Sheets(1)
.Close SaveChanges:=True
End With
End Sub
E mi da ancora il famigerato errore!
testualmente :
Errore di run-time '1004':
Errore nel metodo Copy per la classe Worksheet.
Nel err.source trovo "Microsoft Excel"
Ho provato a reinstallare office97, ma niente.
Mi rimane ancora da reinstallare VB5 ma non credo sia coinvolto.(uso Vba)
Ora ho momentaneamente aggirato il problema creando una macro che, lanciata
come tale (e non dal pulsante) funziona. Ma devo trovare il modo di
utilizzare questo metodo.
Ps. tutto ciň č comune sia al metodo copy che al move.
Spero che ti venga in mente qualche dritta.
Ciao, Pietro.