Buonasera a tutti,
In un file Excel ho un elenco di prodotti del tipo colonna A: codice e colonna B: nome.
Vorrei:
-creare un file per ogni prodotto, partendo da uno di base che contiene delle formule, denominato "codice_nome.xlsx"
-creare una macro che mi apre ogni file, aspetta 30 secondi, lo salva e lo chiude
Per la prima parte sono riuscito a farlo con la seguente macro:
"Sub Crea_File()
Dim UR As Integer, I As Integer, WB1 As Workbook, WS1 As String, Nome_Precedente As String, Nome_Modello As String
Set WB1 = ActiveWorkbook
WS1 = WB1.ActiveSheet.Name
UR = Range("A" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
Nome_Precedente = ActiveWorkbook.Name
Nome_Modello = "File_Base.xlsx"
Workbooks.Open Filename:=Nome_Modello
For I = 2 To UR
ActiveWorkbook.SaveAs Filename:= _
WB1.Sheets(WS1).Cells(I, 1) & "_" & WB1.Sheets(WS1).Cells(I, 2) & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Next I
ActiveWindow.Close
Windows(Nome_Precedente).Activate
Application.ScreenUpdating = True
MsgBox "Elaborazione Effettura. Creati " & I - 2 & " file"
Set WB1 = Nothing
End Sub"
vorrei, però, che i file creati fossero in formato .xlsx e non .xls. Come devo modificare "FileFormat:="? Ho provato a cambiare solo l'estensione scrivendo ".xlsx" anzichè ".xls" ma poi quando apro il file mi dà errore.
Come posso fare poi per creare la seconda macro? I file si trovano tutti nella stessa cartella e vorrei che avviando la macro si aprissero uno alla volta in modo autonomo, senza che debba selezionarli io, e che poi si salvassero e chiudessero.
Ho provato a cercare sul forum ma date le mie scarse conoscenze non sono riuscito a trovare una soluzione.
Grazie in anticipo
EDIT:
Ho trovato questa macro che mi fa aprire il file il cui nome è nella cella A1:
"Public Sub mApriFile()
On Error GoTo RigaErrore
Dim sh As Worksheet
Dim wrk As Workbook
Dim sPath As String
Dim sNomeFile As String
Dim lRisposta As Long
sPath = "C:\cartella\"
Set sh = Worksheets("Foglio1")
With sh
sNomeFile = .Range("A1").Value & ".xls"
lRisposta = MsgBox(Prompt:="Vuoi aprire il file: " _
& sNomeFile, Title:="Attenzione", _
Buttons:=vbYesNo + vbQuestion)
If lRisposta = vbYes Then
Workbooks.Open (sPath & sNomeFile)
End If
End With
RigaChiusura:
Set sh = Nothing
Exit Sub
RigaErrore:
MsgBox Err.Number & vbNewLine & Err.Description
Resume RigaChiusura
End Sub"
E l'ho adattata al mio caso. Vorrei però:
-che non mi chiedesse la conferma prima di aprire il file
-che salvasse e chiudesse il file 30 secondi dopo averlo aperto
-che aprisse tutti i file dell'elenco e non solo il primo
ri-grazie