View Full Version : [vba excel] aprire file,rinominarlo e lavorare sul nuovo
john_revelator
07-06-2009, 19:36
Salve a tutti. Vi spiego rapidamente la mia esigenza. Vorrei aprire tramite vba un file di excel, assegnare allo stesso un nuovo nome e poi poter lavorare su quest'ultimo modificandolo. Ho scritto questo codice
Private Sub invia_Click()
Dim XL As Excel.Application
Set XL = New Excel.Application
Dim WB As Excel.Workbook
Set WB = XL.Workbooks.Open("C:\percorso\file1.xls")
WB.SaveAs Filename:="C:\percorso\file2.xls", FileFormat:=xlXMLSpreadsheet, ReadOnlyRecommended:=False, CreateBackup:=False
Set xlSheet = WB.Sheets(1)
xlSheet.range("a10").Value = "testo di prova"
XL.Visible = True
'WB.Close False
End Sub
che mi sembra che funzioni ma vorrei un vostro parere in merito. Mi piacerebbe inoltre poter gestire l'eventualità che il nome del file sia già esistente. Grazie per l'attenzione. :)
Altra domanda. Ho provato a lanciare la routine con il file1.xls già aperto, pensando che mi restituisse qualche errore a causa di questo e invece no. Quindi non è necessario verificare se il file sia già aperto ed eventualmente chiuderlo prima di crearne una copia?
Sì, il codice è corretto.
Per controllare l'esistenza di un file ci sono diversi metodi. Il più semplice forse è l'uso di Dir() :
If Dir(percorso & nomeFile) <> "" Then
MsgBox "esiste"
Else
MsgBox "non esiste"
End If
ma Dir() forse è un tantino "atipica" come funzione perciò meglio leggersi a fondo la documentazione prima di usarla...
Altro metodo, farsi una Function che controlla la lunghezza di un File :
Private Function FileEsiste(nomeCompletoFile As String) As Boolean
Dim r As Long
On Error GoTo E
r = FileLen(nomeCompletoFile)
FileEsiste = True
Exit Function
E:
FileEsiste = False
End Function
Infine, sì, non da errore perchè in istanze diverse di Excel puoi avere n volte lo stesso file. Alla fine "chi vince" è l'ultimo ad aver salvato le modifiche...
john_revelator
08-06-2009, 12:41
Ciao Marco. Gentilissimo come al solito. Stasera mi metto a studiare sul codice che mi hai scritto. Un'ultima domanda anche se non strettamente attinente alla discussione. A volte vedo in alcune funzioni, quali dir e ucase, il simbolo del dollaro alla fine. Che differenza c'è quindi tra Dir e Dir$? Ho provato a cercare su google ma forse uso chiavi di ricerca sbagliate e non trovo nulla. Grazie ancora. :)
Ciao Marco. Gentilissimo come al solito. Stasera mi metto a studiare sul codice che mi hai scritto. Un'ultima domanda anche se non strettamente attinente alla discussione. A volte vedo in alcune funzioni, quali dir e ucase, il simbolo del dollaro alla fine. Che differenza c'è quindi tra Dir e Dir$? Ho provato a cercare su google ma forse uso chiavi di ricerca sbagliate e non trovo nulla. Grazie ancora. :)
Si trovano di solito in vecchi codici, riadattati da versioni di VB precedenti, soprattutto quando l'autore ha poca voglia di riscrivere, traducendo ogni istruzione...
Esattamente non so dire a quale versione di VB appartengano, perchè a livello di VB-non-.Net al massimo ricordo qualcosa di VB5, più indietro non vado ( a parte QuickBasic ).
La $ potrebbe essere retaggio di vetuste versioni di BASIC, QuickBASIC, GWBasic ecc..., e si è trascinata fino a VBA / VB6, che infatti ne consentono l'uso.
Io personalmente non uso MAI definire alcunchè usando la $ finale.
Se ad esempio vai nel visualizzatore oggetti di VBA-Excel, e cerchi "ucase", ottieni 2 risultati, dalla classe VBA.Strings : UCase e UCase$, e la guida in linea porta sempre alla UCase. ;)
john_revelator
08-06-2009, 14:32
Perfetto. Quindi ne posso tranquillamente fare a meno. :D
Ti ringrazio per l'ennesima volta. Buona serata. :)
Perfetto. Quindi ne posso tranquillamente fare a meno. :D
Ti ringrazio per l'ennesima volta. Buona serata. :)
Linea Recta Brevissima, il metodo più semplice per fare una cosa è spesso anche il migliore... Quella $ più che confondere le idee non fa. Ciao. :D
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.