通过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代码,就可能会让你感到困惑。