通过VBA将excel文件导出为HTML会导致麻烦 – 无处不在的“想要保存?”popup窗口

我正尝试使用此代码将当前工作簿导出到带有当前时间戳的HTML网站

Private Sub btnSave_Click() ActiveWorkbook.Save 'Save current file Dim ActSheet As Worksheet Dim ActBook As Workbook Dim CurrentFile As String Dim NewFileType As String Dim NewFile As String Application.ScreenUpdating = False ' Prevents screen refreshing. CurrentFile = ThisWorkbook.FullName ' Remeber location of original file NewFileType = "Web files File (*.HTML), *.html" 'Set file type Newfilename = "Shed9-" & Format(CStr(Now), "yyyy-mm-dd_hh-mm") 'Save as timestamp NewFile = Application.GetSaveAsFilename( _ InitialFileName:=Newfilename, _ fileFilter:=NewFileType) If NewFile <> "" And NewFile <> "False" Then ActiveWorkbook.SaveAs Filename:=NewFile, _ FileFormat:=xlHtml Set ActBook = ActiveWorkbook Workbooks.Open CurrentFile ActBook.Close End If Application.ScreenUpdating = True End Sub 

从理论上讲,这个过程应该保存当前文件,保存副本(带有时间戳,忽略VBA)作为网页,closures网页(说实话,我甚至不想打开),然后回到原来的电子表格。 不幸的是问题是closures部分:Excel打开网页(!),然后我有永无止境的popup式问题“你想保存文件”Shed-9 .html?

那么我怎样才能删除popup窗口而不用打开呢?

编辑我试图强制保存HTML复制之前通过把closures

 ActBook.Save ActBook.Close 

但是这导致了一个错误:

“具有相同密钥的项目已被添加”。 如果这很重要的工作簿有多个工作表和PowerQuery采取的数据

编辑(原始代码来自这里) – 原作者应该收到他/她的信用

尝试:

 ActBook.Close False 

如果以非excel格式保存工作簿,则会问您是否要再次保存该文件,而不会失败。 使用可选的“False”参数告诉excel你想closures而不保存。

你可以安全地跳过这些行,你实际上要求Excel做这些(打开文件):

  Set ActBook = ActiveWorkbook Workbooks.Open CurrentFile ActBook.Close 

我想可能会让你感到困惑的是closures了屏幕更新,这隐藏了你(幕后)发生的事情。

  Application.ScreenUpdating = False 

如果你真的想隐藏正在发生的事情,这是非常好的,但是我认为只要你有Workbooks.Open代码,就可能会让你感到困惑。