用Workbook打开html文件。在新的工作簿中打开allways

我使用Workbooks.Open方法在Excel中打开本地html文件。 此方法在新的工作簿中打开文件,所以然后我将UsedRange复制到我当前的工作簿的ActiveSheet中。 一切工作正常,除非我第一次打开Excel,不要修改任何单元格,并按下button(在我的自定义加载项(xlam))打开此HTML文件。 在这种情况下,该文件在当前工作表中打开。 我怎样才能实现在其他工作簿或其他工作表中打开这个外部文件? 这是我的代码示例:

Dim tempWorkbook As Workbook Set tempWorkbook = Workbooks.Open("file:///C:/report.html") 

此代码仅在当前活动工作表已修改时才在另一个工作簿中打开HTML文件,但如果之前未由用户修改,则会在当前工作簿中打开。

编辑这现在把设置恢复到原来的价值。

您可以告诉Excel当前的工作簿没有保存 – 强制它在打开HTML文件时保持原位。 下面的例子在执行前检查它是否被称为Book1:

 Dim savedsetting As Boolean Dim tempWorkbook As Workbook Dim curWorkbook As Workbook Set curWorkbook = ActiveWorkbook savedsetting = curWorkbook.Saved If curWorkbook.Name = "Book1" Then curWorkbook.Saved = False Set tempWorkbook = Workbooks.Open("file:///C:/report.html") if curWorkbook.Saved <> savedsetting then curWorkbook.Saved = savedsetting 

您可以使用

 Dim sFile$ Dim tempWorkbook As Workbook sFile = "file:///C:/report.html" Set tempWorkbook = Application.Workbooks.Add(Template:=sFile) 

然后,工作簿将作为模板打开,但仍保留原始名称 。 原始文件不会被locking,可以移动。 在下一步中用一个新的名字保存它将是一件好事。

如果它不能与HTML(我用xlsxtesting),那么你可以做到以下几点:

 Dim sFile$ Dim tempWorkbook As Workbook sFile = "file:///C:/report.html" Set tempWorkbook = Application.Workbooks.Add tempWorkbook.Activate 'Activates new workbook Set tempWorkbook = Application.Workbooks.Open(sFile) 'opens a file 

设置一个单独的variables,如果新的工作簿仍然是空白后打开HTML – 你会想closures它。

你有没有尝试Workbooks.Add方法? 如果我将它实现到我的自定义栏并使用不同的testing文件,它的工作原理。

 Sub Dim tempWorkbook As Workbook Set tempWorkbook = Workbooks.Add("file:///C:/report.html") End 

我接受了@CLR答案,但实际上这个实现有一个缺点。 如果用户打开excel initialy他/她有一个名为“Book1”的空工作簿。 如果他/她创build另一个空的工作簿“Book2”,并试图打开HTML文件,当它在工作簿“Book1”上打开,而不是在新的工作簿上。 所以我修改了这样的build议代码:

打开html文件之前:

 For i = 1 To Workbooks.Count ReDim Preserve savedSettings(i) savedSettings(i - 1) = Workbooks(i).Saved Workbooks(i).Saved = False Next 

打开后,复制并closuresTEMP(html)工作簿后:

 For i = 1 To Workbooks.Count Workbooks(i).Saved = savedSettings(i - 1) Next ActiveWorkbook.Saved = False