Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Angelobox,
Tuttavia, evidentemente il mio livello di conoscenza del VBA non è abbastanza elevato.
Infatti quando inserisco lo script mi segnala errore già dai DIM (Tipo definito dall'utente non definito) e se faccio saltare i DIM, mi segnala : l'accesso a livello di programmazione al Progetto Visual Basic non è attendibile.
Prova come segue.
- Alt+F11 per aprire l'editor di VBA
- Scheda Strumenti
- Fai clic su Riferimenti
- Trova e spunta il riferimento Microsoft Visual Basic For Applications Extensibility 5.3
- OK
- Alt+IMper inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Function PercorsoFornitoDaUtente() As String
Dim FD As FileDialog
Dim sFilename As String
Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
.AllowMultiSelect = False
.Title = "Seleziona il file da aprire e salvare come tipo xlsx."
.Filters.Clear
.Filters.Add "Excel", "*.xlsb"
If .Show = True Then
sFilename = Dir(.SelectedItems(1))
End If
End With
PercorsoFornitoDaUtente = sFilename
End Function
'--------->>
Public Sub Tester()
'\ Aggiungi un riferimento alla library:
'\ Microsoft Visual Basic For Applications Extensibility 5.3
Dim WB As Workbook
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim sFilename As String, sName As String
sFilename = PercorsoFornitoDaUtente
If sFilename = vbNullString Then
Call MsgBox( _
Prompt:="Non hai selezionato un file!", _
Buttons:=vbCritical, _
Title:="REPORT")
Exit Sub
End If
Set WB = Workbooks.Open(sFilename)
Set VBProj = WB.VBProject
For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
With CodeMod
.DeleteLines 1, .CountOfLines
End With
Else
VBProj.VBComponents.Remove VBComp
End If
Next VBComp
On Error GoTo XIT
Application.DisplayAlerts = False
With WB
sName = Split(.Name, ".")(0) & ".xlsx"
.SaveAs Filename:=sName, FileFormat:=51
.Close SaveChanges:=False
End With
XIT:
Application.DisplayAlerts = True
End Sub
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensionexlsm
- Alt+F8 per aprire la finestra di gestione delle macro
- Seleziona Tester | Esegui
Questo codice:
- Apre una finestra di dialogo per consentire la selezione del file di interesse
- Apre il file
- Rimuove tutto l'eventuale codice
- Salva il file come un nuovo file del tipo XLSX, utilizzando il nome originale
- Chiude il file originale xlsb senza alterarlo.
===
Regards,
Norman