【问题标题】:Publishing Excel as Webpage将 Excel 发布为网页
【发布时间】:2015-06-11 06:50:22
【问题描述】:

我正在尝试使用 VB 脚本将 excel 保存为网页。我面临的问题是excel中的工作表名称(例如Sheet1)也保存在网页中。我不希望工作表名称出现在网页中。

我发现的一个解决方案是,如果将 excel 作为网页发布(而不是另存为网页),那么它将不包含工作表名称。但是我在尝试使用 VB 脚本时遇到了问题。下面是代码:

Dim objApp, objBook, objRange, objSheet
Set objApp = CreateObject("Excel.Application")
objApp.Visible = False
Set objBook = objApp.Workbooks.Open("C:\Dashboard\excel_files\Account Executive.xlsx")
Set objSheet = objBook.worksheets("Account Executive")
Set objRange = objSheet.Range("C5:I30")

With objBook.PublishObjects.Add(xlSourceRange, "C:\EXCEL_TO_HTML_RANGE.htm", "Account Executive", objRange.Address, xlHtmlStatic, "Title of the page").Publish(True) 
End With


objBook.Close
objApp.Quit
Set objSheet = Nothing
Set objRange = Nothing
Set objApp = Nothing

此代码给出一个未知的运行时错误,代码为 800A03EC。 是否有更正此代码或其他方式从网页中删除工作表名称?

提前致谢。 :)

感谢@AxelRichter excel 2010 的最终工作代码:

Dim objApp, objBook, objRange, objSheet

Set objApp = CreateObject("Excel.Application")

objApp.Visible = False

Set objBook = objApp.Workbooks.Open("C:\Dashboard\excel_files\OU Dashboard.xlsx")
Set objSheet = objBook.worksheets("OU Dashboard")
Set objRange = objSheet.Range("C5:J30")

Dim oPOs, oPO
Set oPOs = objBook.PublishObjects
Set oPO = oPOs.Add(4, "C:\Dashboard\EXCEL_TO_HTML_RANGE.htm", "OU Dashboard", "$C$5:$J$30", 0, "TableDIVID", "Title of the page")
oPO.Publish (True)

set oPO = Nothing
set oPOs = Nothing
Set objSheet = Nothing
Set objRange = Nothing


objBook.Close False
set objBook = Nothing 
objApp.Quit
Set objApp = Nothing

【问题讨论】:

    标签: excel vbscript webpage publish


    【解决方案1】:

    您的代码存在三个问题。

    首先:常量xlSourceRangexlHtmlStatic 可能是未定义的。因此,请改用它们的值。有关 XlSourceType 和 XlHTMLType,请参阅 https://msdn.microsoft.com/en-us/library/office/ff823068.aspx

    第二:With需要Add返回的对象,而不是Publish的响应。

    第三:你把DivIDTitle搞混了。

    Dim objApp, objBook, objRange, objSheet
    Set objApp = CreateObject("Excel.Application")
    objApp.Visible = False
    Set objBook = objApp.Workbooks.Open("C:\Dashboard\excel_files\Account Executive.xlsx")
    Set objSheet = objBook.worksheets("Account Executive")
    Set objRange = objSheet.Range("C5:I30")
    
    With objBook.PublishObjects.Add(4, "C:\EXCEL_TO_HTML_RANGE.htm", "Account Executive", objRange.Address, 0, "TableDIVID", "Title of the page")
     .Publish(True) 
    End With
    
    
    objBook.Close False
    objApp.Quit
    Set objSheet = Nothing
    Set objRange = Nothing
    Set objApp = Nothing
    

    With .. End With可以替换为以下代码进行调试:

    ...
    Dim oPOs, oPO
    Set oPOs = objBook.PublishObjects
    Set oPO = oPOs.Add(4, "C:\EXCEL_TO_HTML_RANGE.htm", "Account Executive", "$C$5:$I$30", 0, "TableDIVID", "Title of the page")
    oPO.Publish (True)
    ...
    

    【讨论】:

    • 我尝试使用编辑后的代码。现在我在 With 语句中收到以下错误:此版本的 Excel 不支持此方法或属性。我正在使用 Excel 2010。是否有其他解决方案?
    • 无法重现,因为我没有 Excel 2010。它适用于我的 Excel 2007 test.vbs。请尝试以下操作: 打开新的 Excel 工作簿。将代码放在Sub 中的Module 中。现在使用F8 逐步执行代码。哪个错误在哪里?
    • 我尝试了你的建议。它在 WITH 语句中给出了相同的错误。运行时错误:1004 此版本的 Excel 不再支持此方法或属性。
    • 不清楚是指哪种方法。所以尝试用我在答案中补充的代码替换With .. End With
    • 有两个场景:案例1:使用上面编辑的代码,它在oPO中给出应用程序定义或对象定义错误。发布(真)案例2:我编辑了添加语句:设置oPO = oPOs.Add(SourceType = xlSourceRange, Filename = "C:\Dashboard\EXCEL_TO_HTML_RANGE.htm", Sheet = "Account Executive", Source = "$C$5:$K$30", HtmlType = xlHtmlStatic, DivID = "Book1_4170")以下是 add 语句中的错误:运行时错误:1004 此版本的 Excel 不再支持此方法或属性。
    猜你喜欢
    • 2011-06-26
    • 2017-03-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多