Как я могу перезаписать другой Excel-файл без диалога «Действительно хочу перезаписать» в VB.NET - PullRequest
3 голосов
/ 11 февраля 2010

Как сохранить файл Excel, который я бы отредактировал с помощью VB.NE, в файл, который уже существует? Всегда существует диалоговое окно: файл уже существует. Вы действительно хотите перезаписать? ДА | НЕТ | Прервать

Как мне перезаписать без этого диалога?

Ответы [ 6 ]

7 голосов
/ 11 февраля 2010

Вы должны взглянуть на настройку

DisplayAlerts=false

Свойство Application.DisplayAlerts

Установите для этого свойства значение False, если вы не хочу, чтобы вас беспокоили подсказки и предупреждающие сообщения, пока программа Бег; в любое время сообщение требует ответ, Microsoft Excel выбирает ответ по умолчанию.

Просто не забудьте сбросить его на true, как только вы закончите.

В настоящее время мы делаем это следующим образом

object m_objOpt = Missing.Value;
m_Workbook.Application.DisplayAlerts = false;
m_Workbook.SaveAs(  fileName, m_objOpt, m_objOpt, 
                    m_objOpt, m_objOpt, m_objOpt, 
                    XlSaveAsAccessMode.xlNoChange, 
                    XlSaveConflictResolution.xlLocalSessionChanges, 
                    m_objOpt, m_objOpt, m_objOpt, m_objOpt);
2 голосов
/ 01 августа 2014
 Dim xlWorkBook As Excel.Workbook
 Dim xlWorkSheet As Excel.Worksheet
 Dim misValue As Object = System.Reflection.Missing.Value

 xlWorkBook.SaveAs(<YourFileName>, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue,   misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue)
 xlWorkBook.Close(True, misValue, misValue)
1 голос
/ 11 февраля 2010

В классе SaveFileDialog есть свойство с именем OverwritePrompt, для которого установлено значение false.

Надеюсь, это поможет.

1 голос
/ 11 февраля 2010

Не могли бы вы сначала попытаться удалить файл, прежде чем перезаписать его?

0 голосов
/ 02 октября 2017

Я решил эту проблему, используя вместо этого метод Object.Save (). Я пытался использовать метод SaveAs даже с DisplayAlerts = $ false, но он все еще продолжал давать мне предупреждение о перезаписи.

Фрагмент кода ниже:

# Create an Object Excel.Application using Com interface
$objExcel = New-Object -ComObject Excel.Application
# Disable the 'visible' property so the document won't open in excel
$objExcel.Visible = $true
# Override warning messages about existing file
$objExcel.DisplayAlerts = $false
# Open the Excel file and save it in $WorkBook
$WorkBook = $objExcel.Workbooks.Open($FilePath)
# Load the WorkSheet 'BuildSpecs'
$WorkSheet = $WorkBook.sheets.item($SheetName)
# Pause execution to allow data refresh to occur (about 5 minutes to be safe)
Start-Sleep -s 300
# Now the Save the file After Refreshing (need to add a pause for about 5 minutes)
$WorkBook.Save()
# Wait while saving before closing excel object
Start-Sleep -s 30
# Now close the workbook
0 голосов
/ 10 августа 2016

Я решил проблему, установив для третьего параметра xlApp.Workbooks.Open значение false при создании книги. Это аргумент только для чтения, и если ему присвоено значение true, он попросит сохранить файл.

Sub ExcelMacroExec2()
    Dim xlApp, xlBook

    Set xlApp = CreateObject("Excel.Application")
    xlApp.DisplayAlerts = False

    Set xlBook = xlApp.Workbooks.Open("C:\Users\A\myFile.xlsm", 0, False)
    xlApp.Run "Macro1"   

    xlApp.Save 
    xlBook.Close false
    xlApp.Quit   

    Set xlApp = Nothing
    set xlBook = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...