Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116

    [VBA] Capire se il file è stato apetro più di una volta

    Aiuto!!!

    C'è qualcuno che mi sa dire se in VBA è possibile capire
    se un file excel è stato aperto più di una volta?



    Mi spiego: io vorrei eseguire una macro solo la prima volta che un file
    excel viene aperto. La seconda volta che il file viene aperto la macro
    non deve essere eseguita.
    Al momento ho questo codice:

    Private Sub Workbook_Open()

    Macro_da_eseguire_una_sola_volta
    ActiveWorkbook.Save

    End Sub
    Vorrei trasformarlo in qualcosa di simile:


    Private Sub Workbook_Open()

    if PRIMA_VOLTA_APERTO = true then
    Macro_da_eseguire_una_sola_volta
    ActiveWorkbook.Save
    else
    MsgBox("Ciao")

    End Sub


    Help!!
    ---------------------------------------------------------------
    Libera il mondo: usa linux!

    Neither MS-Word nor MS-PowerPoint attachments please: http://www.gnu.org/philosophy/no-word-attachments.html

  2. #2
    La via piu' semplice, secondo me, e' fare in modo che la routine utilizzi una cella del foglio come indicatore (cella ovviamente non usata dal foglio per altri scopi !)

    La routine dovra' per prima cosa leggere la cella,
    codice:
    If  <e' vuota> Then
      'e' la prima volta che viene chiamata:
      <scrivo qualcosa nella cella>
      'eseguo quello che serve...
    End If
    quando la cella non e' vuota, la routine non eseguira' niente.

    Che te ne sembra ?


    P.S.: come alternativa, si potrebbe utilizzare come flag una chiave di registro (vedi SaveSetting, GetSetting), ma non so se ne vale la pena...
    IceCube_HT (VB6 fan Club)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Grazie non ci avevo pensato!!!


    A presto
    ---------------------------------------------------------------
    Libera il mondo: usa linux!

    Neither MS-Word nor MS-PowerPoint attachments please: http://www.gnu.org/philosophy/no-word-attachments.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Grazie ancora per la risposta,
    ma a me piacerebbe invece usare questo metodo:

    Supponiamo di avere dei fogli nella cartella di lavoro e che
    uno di questi si chiami "Auto Vendute".
    La prima volta che apro il foglio viene eseguita la macro "Esecuzione_mia_macro"
    e subito dopo viene eseguita una seconda macro "NascondiFogli_tranne_uno"
    che ha lo scopo di rendere non visibili tutti i fogli di calcolo (tra cui il foglio
    "Auto Vendute") tranne uno.


    Perchè questa sintassi è sbagliata? Mi dà un errore in fase di esecuzione
    sulla riga relativa all'if


    [QUOTE]
    Private Sub Workbook_Open()

    Sheets("Auto Vendute").Select
    If ActiveWindow.SelectedSheets.Visible = True Then

    Esecuzione_mia_macro
    NascondiFogli_tranne_uno

    ActiveWorkbook.Save

    End If

    End Sub

    [\QUOTE]
    ---------------------------------------------------------------
    Libera il mondo: usa linux!

    Neither MS-Word nor MS-PowerPoint attachments please: http://www.gnu.org/philosophy/no-word-attachments.html

  5. #5
    Originariamente inviato da frodo_jedi
    Grazie ancora per la risposta,
    ma a me piacerebbe invece usare questo metodo:

    Supponiamo di avere dei fogli nella cartella di lavoro e che
    uno di questi si chiami "Auto Vendute".
    La prima volta che apro il foglio viene eseguita la macro "Esecuzione_mia_macro"
    e subito dopo viene eseguita una seconda macro "NascondiFogli_tranne_uno"
    che ha lo scopo di rendere non visibili tutti i fogli di calcolo (tra cui il foglio
    "Auto Vendute") tranne uno.


    Perchè questa sintassi è sbagliata? Mi dà un errore in fase di esecuzione
    sulla riga relativa all'if


    Private Sub Workbook_Open()
    Sheets("Auto Vendute").Select
    If ActiveWindow.SelectedSheets.Visible = True Then
    Esecuzione_mia_macro
    NascondiFogli_tranne_uno
    ActiveWorkbook.Save
    End If
    End Sub
    Perche' SelectedSheets restituisce un INSIEME di fogli, quindi non puoi interrogarne direttamente la proprieta' Visible...

    Ti consiglio di usare ActiveSheet.Visible anziche' ActiveWindow.SelectedSheets.Visible,
    ma c'e' un altro problema:
    se rendi "invisibile" il foglio "Auto Vendute" e salvi il file, alla riapertura lo stesso foglio sara' sempre invisibile ed il metodo Select fallira' !
    IceCube_HT (VB6 fan Club)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    116
    Ok.

    Grazie ancora.

    A buon rendere!
    ---------------------------------------------------------------
    Libera il mondo: usa linux!

    Neither MS-Word nor MS-PowerPoint attachments please: http://www.gnu.org/philosophy/no-word-attachments.html

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.