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.