【问题标题】:How can I overwrite an other Excel-file without the Dialog "Really want to overwrite" in VB.NET如何在没有 VB.NET 中“真的要覆盖”对话框的情况下覆盖其他 Excel 文件
【发布时间】:2021-05-10 06:15:16
【问题描述】:

如何将使用 VB.NE 编辑的 Excel 文件保存到已经存在的文件中?每次都有一个对话框:文件已经存在。你真的要覆盖吗?是|否|中止

如果没有此对话框,我如何覆盖?

【问题讨论】:

  • 请告诉我们您正在使用的代码! (其中的相关部分,即您进行保存操作的部分。)

标签: vb.net excel


【解决方案1】:

你应该看看设置

DisplayAlerts=false

Application.DisplayAlerts Property

如果您将此属性设置为 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);

【讨论】:

  • 现在不会弹出对话框。但是不,应用程序不会保存文件。
  • 我试着像你一样做......但有一个例外:HRESULT : 0x800A03EC
【解决方案2】:
 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)

【讨论】:

    【解决方案3】:

    您不能先删除文件,然后再覆盖它吗?

    【讨论】:

    • 如果没有其他办法..我会选择这个。
    【解决方案4】:

    SaveFileDialog 类中有一个属性,称为OverwritePrompt,将其设置为 false。

    希望这会有所帮助。

    【讨论】:

    • 我不使用 SaveFileDialog。我关闭了我的 Excel 应用程序。
    • @elr:啊……你应该在问题中这么说……结果我现在冒着被否决的风险……你在使用 Excel COM Interop 吗?也把它放在你的问题中!
    【解决方案5】:

    我解决了在创建工作簿时将 xlApp.Workbooks.Open 的第三个参数设置为 false 的问题。这是 readonly 参数,如果设置为 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
    

    【讨论】:

      【解决方案6】:

      我改用 Object.Save() 方法解决了这个问题。即使使用 DisplayAlerts = $false,我也尝试使用 SaveAs 方法,但它仍然不断给我覆盖警告。

      代码片段如下:

      # 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
      

      【讨论】:

        【解决方案7】:

        在保存命令之前使用 (Application.DisplayAlerts = False) 和之后使用 (Application.DisplayAlerts = True) 避免了对话框:

        Workbooks.Open "C:\XML\baseline\RTWP\Analisis.xlsb"
        Windows("Analisis.xlsb").Activate
        Sheets("Data").Select
        Cells.Select
        Selection.ClearContents
        Workbooks.Open "C:\XML\baseline\RTWP\output\totemplate.csv"
        Windows("totemplate.csv").Activate
        Sheets("totemplate").Select
        Cells.Select
        Selection.Copy
        Windows("Analisis.xlsb").Activate
        Range("A1").Select
        ActiveSheet.Paste
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs fileName:="C:\XML\baseline\RTWP\Analisis.xlsb", FileFormat:=xlExcel12, CreateBackup:=False
        Application.DisplayAlerts = True
        ActiveWorkbook.Close SaveChanges:=False
        Windows("totemplate.csv").Activate
        ActiveWorkbook.Close SaveChanges:=False
        

        【讨论】:

          猜你喜欢
          • 2014-09-29
          • 1970-01-01
          • 2016-11-17
          • 2019-06-29
          • 1970-01-01
          • 2014-01-20
          • 1970-01-01
          • 1970-01-01
          • 2022-08-06
          相关资源
          最近更新 更多