使用命令button将excel工作表发布为HTML文件

所以我的工作簿中有大量的数据需要传递给我的用户,让他们能够与工作簿进行交互……但是也限制了他们实际上可以做的事情。 所以我已经做到了,所以他们可以访问某些页面来添加所需的数据,然后我可以访问菜单页面,以便他们可以运行报告。

我发现这个报告是最好的,如果它是一个HTML页面。 为此,我尝试了几种不同的方式,保存为…并发布。 我喜欢发布的版本,但我不能为我的生活得到这个工作。 我看到的所有样本都是一样的。 这里是有问题的代码行:

ActiveWorkbook.PublishObjects.Add(xlSourceSheet, ActiveWorkbook.Path & ".htm, "Sheet1", "", xlHtmlStatic, "", "Report Title").Publish True 

每次遇到运行时错误“1004”:对象“发布对象”的“发布”方法失败

我有一个子代码的上述行,我错过了什么? 我需要设置不同的发布吗? 感谢您的任何想法。

我有一个类似的神秘问题,有时它(.Publish)起作用,有时它不,当我尝试发布。

但是,我认为这个问题可能是,如果它不能正常工作,首先将相关区域保存为一个网页,以便它已经存在于服务器上。 在该区域被保存至less一次之后(手动或者也许用.SaveAs ..见下文),那么发布可能工作。

这里是一个如何让这个工作更加一致的例子,传达了一个适合我的结构:

 wkb=ActiveWorkbook.Name 'save wb for later access url="http://a.com/b.htm" 'save to Internet sheetname="c" Sheets(sheetname).Range("d1:e2").Select 'activating sheet may be necessary On Error Resume Next 'anticipate error to handle it 'Now comes the publish line the first time... which may work.. or not ActiveWorkbook.PublishObjects.Add(xlSourceRange,url,sheetname,"d1:e2",xlHtmlStatic,"blah","moreblah").Publish (True) 'may fail to create page on website if page didn't already exist theerr=Err.Number On Error GoTo 0 'back to default error handling (none) If theerr <> 0 Then 'if here perhaps because page nonexistent 'msgbox "maybe add warning here [FYI]" Sheets("dummysheetwithlittleornodata").Copy 'will create workbook On Error Resume Next ActiveWorkbook.SaveAs url 'may fail to create webpage first time ActiveWorkbook.saveAs url 'twice needed for some reason sometimes. [works for me] On Error GoTo 0 'with fresh dummy html page created, now publish should hopefully work.. let's try again ActiveWorkbook.Close savechanges:=False 'clean up and avoid popup Workbooks(wkb).Activate 'get back to correct wkb Sheets(sheetname).Range("d1:e2").Select ActiveWorkbook.PublishObjects.Add(xlSourceRange,url,sheetname,"d1:e2",xlHtmlStatic,"blah","moreblah").Publish (True) 'hopefully if failed first time, now it succeeded ! good luck. End If 

上面的代码结构使我能够解决我遇到的几个发布问题。 目前为止,所有这些技术已经足够让我可以保存从网页到网页(到我有写权限的服务器)的范围,而无需手动进行任何操作(如手动保存或者甚至点击popup窗口)。 祝你好运。

[不同的非显而易见的技术包括在尝试发布范围之前激活一个范围,使用error handling方法和预测某些点的失败,2个saveas用于补偿仅使用一个saveas时发生的神秘不一致的失败,closures并恢复原始干净的工作簿,并使用saveas来“保证”页面存在的forms,将使发布成功更一致。