PDA

Visualizza la versione completa : [vb6 - vba] creare un foglio di excel senza fogli predefiniti


luisa227
18-07-2008, 11:24
Ho una curiosità da levarmi...

uso principalmente vba, con il quale creo un nuovo file di excel in cui copio altri fogli di lavoro da un altro file.

Quindi alla fine mi ritrovo con i fogli di lavoro copiati + i 3 fogli predefiniti (Foglio1,Foglio2, Foglio3).
Volendo rimanere SOLO con i fogli copiati senza quindi i 3 fogli predefiniti, semplicemente sempre tramite vba cancello i tre fogli utilizzando il metodo delete (sheet("Foglio1").delete).

Mi chiedevo però se esiste un altro metodo che mi permetta di creare già alla partenza un file di excel senza fogli....

Esiste?
P.s ho trovato il comando Application.SheetsInNewWorkbook=1
però lo zero non lo accetta...

Grazie
luisa

andreaciao_22
18-07-2008, 13:49
era proprio il metodo che ti volevo consigliare....

basta che dopo aver creato la cartella nuova e prima di copiare tu rinomini il foglio all'interno di essa tipo: "!!!|||!!!" e dopo la copia lo cancelli e salvi la cartella... così l'utente non si accorge di nulla....

se vuoi io ho già fatto un'add-in funzionante per excel che fà questo e altro... se ti va di darci un'occhiata, contattami...

luisa227
18-07-2008, 14:30
Originariamente inviato da andreaciao_22
era proprio il metodo che ti volevo consigliare....

basta che dopo aver creato la cartella nuova e prima di copiare tu rinomini il foglio all'interno di essa tipo: "!!!|||!!!" e dopo la copia lo cancelli e salvi la cartella... così l'utente non si accorge di nulla....

se vuoi io ho già fatto un'add-in funzionante per excel che fà questo e altro... se ti va di darci un'occhiata, contattami...

Però cosi farei un'operazione in più inutile perchè io copio dei fogli in un nuovo file. E fino a qui è ok. Il problema è dopo: nel nuovo file avrò i fogli copiati ... e però ho sempre un foglio (il foglio1) che non centra nulla. Rinominarlo e ricancellarlo non avrebbe senso!

andreaciao_22
18-07-2008, 14:47
ciao Luisa,

Prova questo codice da vba di excel



Sub ProvaCopia()
Dim NewBook As Workbook, ActWkb As Workbook, CopySheet As Worksheet, shNewBook As Worksheet
Dim intShNew As Integer, scUpdate As Boolean, dpAlert As Boolean
With Application
scUpdate = .ScreenUpdating
dpAlert = .DisplayAlerts
intShNew = .SheetsInNewWorkbook
.ScreenUpdating = False
.SheetsInNewWorkbook = 1
.DisplayAlerts = False
Set ActWkb = .ActiveWorkbook 'o il workbook da cui devi copiare
Set CopySheet = ActWkb.Sheets(1)
Set NewBook = .Workbooks.Add
Set shNewBook = NewBook.Sheets(1)
shNewBook.Name = "!!!|||!!!"
CopySheet.Copy shNewBook
shNewBook.Delete
NewBook.Activate
Set shNewBook = Nothing
Set NewBook = Nothing
Set CopySheet = Nothing
Set ActWkb = Nothing
.SheetsInNewWorkbook = intShNew
.ScreenUpdating = scUpdate
.DisplayAlerts = dpAlert
End With
End Sub


dimmi cosa ti esce

luisa227
18-07-2008, 15:33
Originariamente inviato da andreaciao_22
ciao Luisa,

Prova questo codice da vba di excel
...

sì, effettivamente funziona, ma... che differenza cè tra la tua funzione ed il cancellarmi dopo il Foglio1???

Non ce neanche il caso di rinominare il foglio in !!!!!! infatti se levo il codice è uguale! Il delete o prima o dopo lo devo usare.



Sub ProvaCopia()
Dim NewBook As Workbook, ActWkb As Workbook, CopySheet As Worksheet, shNewBook As Worksheet
Dim intShNew As Integer, scUpdate As Boolean, dpAlert As Boolean
With Application
scUpdate = .ScreenUpdating
dpAlert = .DisplayAlerts
intShNew = .SheetsInNewWorkbook
.ScreenUpdating = False
.SheetsInNewWorkbook = 1
.DisplayAlerts = False
Set ActWkb = .ActiveWorkbook 'o il workbook da cui devi copiare
Set CopySheet = ActWkb.Sheets(1)
Set NewBook = .Workbooks.Add
Set shNewBook = NewBook.Sheets(1)
'shNewBook.Name = "!!!|||!!!"
CopySheet.Copy shNewBook
shNewBook.Delete
NewBook.Activate
Set shNewBook = Nothing
Set NewBook = Nothing
Set CopySheet = Nothing
Set ActWkb = Nothing
.SheetsInNewWorkbook = intShNew
.ScreenUpdating = scUpdate
.DisplayAlerts = dpAlert
End With
End Sub

andreaciao_22
18-07-2008, 15:39
il problema è che se un utente ti copia un foglio col nome "Foglio1" tu sei fregata, tesoro.... e poi sempre in quel caso excel ti rinomina il foglio copiato come "Foglio1(2)" meglio correggere ora che incazzarsi di brutto poi...

o sbaglio?

comunque se vuoi scrivermi ecco la mia mail (andrea.m@tiennecommerciale.it) se vuoi chiedere qualcosa a riguardo...

luisa227
18-07-2008, 16:19
Originariamente inviato da andreaciao_22
il problema è che se un utente ti copia un foglio col nome "Foglio1" tu sei fregata, tesoro.... e poi sempre in quel caso excel ti rinomina il foglio copiato come "Foglio1(2)" meglio correggere ora che incazzarsi di brutto poi...

o sbaglio?

comunque se vuoi scrivermi ecco la mia mail (andrea.m@tiennecommerciale.it) se vuoi chiedere qualcosa a riguardo...

ok, ho capito quello che intendi (anche se è impossibile che succeda perchè sono io a copiarmi automaticamente fogli già rinominati...) .

ps. ti ho mandato un pvt per l'add-inn (se a pagamento non mi interessa :D )
Grazie ancora :smack:

Loading