EXCEL - POP-UP apertura file solo se cella indicata è vuota

Anonimo
2021-09-24T07:09:50+00:00

Salve, con un comando basico in VBA che è il seguente:

Private Sub Workbook_Open()

MsgBox "SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE"

End Sub

Vorrei poter mettere al regola che se aprendo il file la cella B4 ha del teso o dei numeri non presenti il messaggio, così il progetto vergine mostra sempre il pop-up mentre se salvato con appunto la cella B4 con testo o numeri non lo presenta più.
Non saprei come risolvere la cosa

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-09-24T15:02:06+00:00

Ciao Aaron,

Hai centrato l'obiettivo perché si apre la finestrella che chiede il nome.

A me interesserebbe che dia il messaggio come in quello che ti ho linkato prima, poi mi apra l'inserimento nome, poi la finestra percorso e via dicendo.

Quando riapro il file appena salvato però non deve più comparirmi l'inserimento nome perché la cella B4 ha già un nome e non serve reinserirlo.

È importante senno sclero 😅

Spero di essermi espresso bene.

Se riesci perché io qua ho un limite enorme. Sei un grande, grazie!

Sempre che io abbia capito la tua esgenza, prova qualcosa del genere:

'========>>

Option Explicit

'-------->>

Private Sub Workbook_Open()

Dim SH As Worksheet 

Dim Rng As Range 

Dim sTitle As String, sButtonName As String, sInitialFileName As String 

Dim sFileName As String 

Dim iFilterIndex As Long 

Dim sTesto As String, sNome\_Corto As String 

Const SFoglio As String = "Foglio1" 

Const sCella As String = "B4" 

Const sPercorso As String = "U:\Commerciale\OFFERTE\OFFERTE SABADIN\2021 OFFERTE\"

Set SH = Me.Sheets(SFoglio) 

Set Rng = SH.Range(sCella) 

sTesto = Rng.Value 

sNome\_Corto = Split(Me.Name, ".")(0) 

If IsEmpty(Rng.Value) Or sNome\_Corto <> sTesto Then 

    sFileName = Application.InputBox("Inserisci il nome con cui salvare il file", "SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE", sTesto, , , , , 2) 

    If sFileName = "Falso" Or sFileName = "False" Then 

        sFileName = vbNullString 

    End If 

    sTitle = "IT | CYBER SECURITY: SCEGLI IL PERCORSO E IL NOME DEL FILE" 

    sButtonName = "SALVA L'OFFERTA" 

    sInitialFileName = sPercorso & sFileName 

    iFilterIndex = 2 

    With Application.FileDialog(msoFileDialogSaveAs) 

        .Title = sTitle 

        .ButtonName = sButtonName 

        .InitialFileName = sInitialFileName 

        .FilterIndex = iFilterIndex 

        If .Show = 0 Then 

            MsgBox "ATTENZIONE IL FILE NON È STATO SALVATO", vbCritical 

            Exit Sub 

        End If 

        Application.DisplayAlerts = False 

        .Execute 

        Application.DisplayAlerts = True 

        Rng.Value = sFileName 

    End With 

End If 

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-09-24T11:13:44+00:00

Ciao Aaron,

Allora ho fatto così e funziona, mi chiedo se prima di far partire la finestra di salvataggio,

posso far apparire una finestra dove inserire un nome, riempie la cella B4, si apre poi la finestra di dialogo di salvataggio riprendendo da solo il nome inserito come nome file.

Private Sub Workbook_Open()

Dim SH As Worksheet

Dim Rng As Range

Const SFoglio As String = "Foglio1"

Const sCella As String = "B4"

Set SH = Me.Sheets(SFoglio)

Set Rng = SH.Range(sCella)

If IsEmpty(Rng.Value) Then

Call MsgBox(Prompt:="SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE." & vbNewLine & "" & vbNewLine & "INSERISCI IL NOME", Buttons:=vbCritical, Title:="SALVA FILE")

Set FileSaveName = Application.FileDialog(msoFileDialogSaveAs)

FileSaveName.FilterIndex = 2

With Application.FileDialog(msoFileDialogSaveAs)

.Title = "SCEGLI IL PERCORSO E IL NOME DEL FILE"

.ButtonName = "SALVA L'OFFERTA"

.InitialFileName = "U:\Commerciale\OFFERTE" & Range("B4").Value

If .Show = 0 Then

MsgBox "ATTENZIONE IL FILE NON È STATO SALVATO", vbCritical

Exit Sub

End If

Application.DisplayAlerts = False

.Execute

Application.DisplayAlerts = True

End With

End If

End Sub

Se ho capito bene, prova qualcosa del genere:

'========>>

Option Explicit

'-------->>

Private Sub Workbook_Open()

Dim SH As Worksheet 

Dim Rng As Range 

Dim sTitle As String, sButtonName As String, sInitialFileName As String 

Dim sFileName As String 

Dim iFilterIndex As Long 

Const SFoglio As String = "Foglio1" 

Const sCella As String = "B4" 

Const sPercorso As String = "U:\Commerciale\OFFERTE\OFFERTE SABADIN\2021 OFFERTE\" 

Set SH = Me.Sheets(SFoglio) 

Set Rng = SH.Range(sCella) 

sFileName = Application.InputBox("Inserisci il nome con cui salvare il file", "SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE", , , , , , 2) 

If sFileName = "Falso" Or sFileName = "False" Then 

    sFileName = vbNullString 

End If 

If IsEmpty(Rng.Value) Then 

    sTitle = "IT | CYBER SECURITY: SCEGLI IL PERCORSO E IL NOME DEL FILE" 

    sButtonName = "SALVA L'OFFERTA" 

    sInitialFileName = sPercorso & sFileName 

    iFilterIndex = 2 

    With Application.FileDialog(msoFileDialogSaveAs) 

        .Title = sTitle 

        .ButtonName = sButtonName 

        .InitialFileName = sInitialFileName 

        .FilterIndex = iFilterIndex 

        If .Show = 0 Then 

            MsgBox "ATTENZIONE IL FILE NON È STATO SALVATO", vbCritical 

            Exit Sub 

        End If 

        Application.DisplayAlerts = False 

        .Execute 

        Application.DisplayAlerts = True 

        Rng.Value = sFileName 

    End With 

End If 

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-09-24T07:57:34+00:00

Ciao Aaron,

Grazie mille per la tempestività!!!

Questa soluzione mi da un errore, ti allego la screen.

Effettivamente avere il tasto salva con nome subito a disposizione è un'ottima idea

Immagine

Purtroppo, l'attuale editor della community ha la sfortunata abitudine di inserire una riga vuota tra ogni riga di codice; questo è normalmente solo fastidioso ma, dove il carattere finale di una riga di codice è un carattere di continuazione di riga (un carattere di sottolineatura), questo provoca l'errore che hai riscontrato.

Per risolvere il problema, eliminare ogni riga vuota nella sezione del codice evidenziata in rosso

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2021-09-24T07:29:48+00:00

Ciao Aaron,

Salve, con un comando basico in VBA che è il seguente:

Private Sub Workbook_Open()

MsgBox "SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE"

End Sub

Vorrei poter mettere al regola che se aprendo il file la cella B4 ha del teso o dei numeri non presenti il messaggio, così il progetto vergine mostra sempre il pop-up mentre se salvato con appunto la cella B4 con testo o numeri non lo presenta più.
Non saprei come risolvere la cosa

Prova qualcosa del genere:

'========>>

Option Explicit

'-------->>

Private Sub Workbook_Open()

Dim SH As Worksheet 

Dim Rng As Range 

Const SFoglio As String = "Foglio1" 

Const sCella As String = "B4" 

Set SH = Me.Sheets(SFoglio) 

Set Rng = SH.Range(sCella) 

If IsEmpty(Rng.Value) Then 

    MsgBox "SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE" 

End If 

End Sub

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-09-24T07:36:38+00:00

    Ciao Aaron,

    Oppure, forse, ancora meglio:

    '========>>

    Option Explicit

    '-------->>

    Private Sub Workbook_Open()

    Dim SH As Worksheet 
    
    Dim Rng As Range 
    
    Const SFoglio As String = "Foglio1" 
    
    Const sCella As String = "B4" 
    
    Set SH = Me.Sheets(SFoglio) 
    
    Set Rng = SH.Range(sCella) 
    
    If IsEmpty(Rng.Value) Then 
    
        Call MsgBox(Prompt:="SALVA CON NOME IL DOCUMENTO PRIMA DI PROCEDERE CON LA COMPILAZIONE", \_ 
    
        Buttons:=vbCritical, \_ 
    
        Title:="SALVA FILE!") 
    
         Application.Dialogs(xlDialogSaveAs).Show 
    
    End If 
    

    End Sub

    '<<========

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento