+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Chiudere Excel senza salvare

  1. #1
    motodriver2002 non è in linea Novello
    Luogo
    Italy
    Post
    17

    Chiudere Excel senza salvare

    Salve a tutti,

    in una windows application ho scritto:

    codice:
    Dim xls As Microsoft.Office.Interop.Excel.Application
    xls = New Microsoft.Office.Interop.Excel.Application
    xls.Workbooks.Open("C:\Temp\ARCHIVIO\WORK\work.xls")
    Dim sheetName As String
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
    xlSheet = xls.Worksheets.Item(1)
    sheetName = xlSheet.Name
    xlSheet = Nothing
    xls.Workbooks.Close()
    xls.Quit()
    xls = Nothing
    Andando in debug, quando arrivo all'istruzione
    codice:
    xls.Workbooks.Close()
    una messagebox mi chiede se voglio salvare il file oppure no.
    C'è un modo per dirgli automaticamente di non salvare ed evitare che venga fuori questo messaggio?

    Grazie a tutti.
    Ultima modifica di elisab; 24-10-2011 00:12 

  2. #2
    L'avatar di alextyx
    alextyx ora è in linea Moderatore Globale
    Luogo
    Prato
    Post
    2,340
    Premetto che ho aperto usato l'interop per la prima volta. Ho dovuto scaricare e installare le PIA, giusto per l'occasione. La domanda mi interessava e da molto tempo mi piaceva provare a manovrare Office da VB, per cui ho preso l'occasione al volo!
    Credo che la soluzione per salvare senza dover confermare sia questa:

    codice:
    Dim xls As New Microsoft.Office.Interop.Excel.Application
    xls.Workbooks.Open("D:\alex\Main\A000 RemoteAD\CalcoliAlVolo.xls ")
    Dim sheetName As String
    Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
    xlSheet = CType(xls.Worksheets.Item(1),Microsoft.Office.Interop.Excel.Worksheet)
    sheetName = xlSheet.Name
    xlSheet.Name = sheetName & "1"
    xlSheet = Nothing
    xls.DisplayAlerts = False
    xls.SaveWorkspace()
    xls.Workbooks.Close()
    xls.Quit()
    xls = Nothing

    Questa riga è diversa perchè io ho Option Strict On (ti consiglio di fare altrettanto):

    codice:
    xlSheet = CType(xls.Worksheets.Item(1),Microsoft.Office.Interop.Excel.Worksheet)
    Le due istruzioni che fanno il gioco sono queste:

    codice:
    xls.DisplayAlerts = False
    xls.SaveWorkspace()
    Se ometti la seconda, chiudi senza salvare, ma sempre senza l'avviso!

    Ho anche aggiunto un "1" al nome del foglio tutte le volte, per accorgermi se le modifiche venivano slavate davvero:

    codice:
    xlSheet.Name = sheetName & "1"
    Ho fatto giusto due prove in croce, quindi dai una controllatina e fammi sapere. Ciao.
    Ultima modifica di elisab; 24-10-2011 00:13 

  3. #3
    motodriver2002 non è in linea Novello
    Luogo
    Italy
    Post
    17
    Funziona parfettamente.

    Era proprio quell'impostazione DisplayAlert = false che mi serviva.

    Grazie mille.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi