簡體   English   中英

如何通過Excel電子表格循環創建單個HTML發布頁面

[英]How to create individual HTML publish pages using loop through excel spreadsheet

我正在嘗試使用Excel電子表格上的循環功能創建單個HTML頁面。 我一直在手動發布每個頁面,但是我有成千上萬的條目,因此我需要使用宏的自動化方法。 我記錄了通過以下手動方法使用的步驟的宏:

Sub HTMLexport()

Columns("A:W").Select
With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
    "C:\Users\<user_name>\Desktop\Excel2HTML\Articles\1045_VSE.htm", _
    "Sheet1", "$A:$W", xlHtmlStatic, _
    "FileName_10067", "")
    .Publish (True)
End With
Columns("W:W").Select
Selection.EntireColumn.Hidden = True
End Sub

最終,我想要的是能夠選擇A列和下一列(例如B,C,H,Etc),然后將這兩列發布到HTML頁面中。 我希望基於單元格引用的文件名。 例如 單元格W3的值為1045,文件名另存為1045_VSE.htm,其中_VSE在循環過程中保持不變。 這樣,每個新的HTML頁面名稱將基於單元格引用增加。 保存HTML頁面后,隱藏該列並移至下一頁,沖洗並重復。 任何幫助都將是驚人的。 提前致謝。

放入循環中應該非常簡單。

這是一個例子。 我假設文件名來自子范圍的第一行/第二列,您可以輕松地修改它,或者問我如何修改。 我還假定Div ID(“ FileName_100067”)是恆定的。 同樣,如果需要,可以輕松進行修改。

Sub HTMLinLoop()
Dim wb As Workbook: Set wb = ActiveWorkbook
Dim ws As Worksheet: Set ws = ActiveSheet
Dim rng As Range '##  The full range including all columns'
Dim subRng As Range '## a variable to contain each publishObjects range'
Dim pObj As PublishObject '## A variable to contain each publishObject as we create it.'
Dim p As Long '## use this integer to iterate over the columns in rng'
Dim fileName As String '## represents just the file name to export'
Dim fullFileName As String '## the full file path for each export'
Dim divName As String '## variable for the DivID argument, assume static for now'

Set rng = ws.Range("A3:W30") '## modify as needed'

For p = 1 To rng.Columns.Count
    'Identify the sub-range to use for this HTML export:'
    ' this will create ranges like "A:B", then "A:C", then "A:D", etc.'
    Set subRng = Range(rng.Columns(1).Address, rng.Columns(p + 1).Address)

    'Create the filename:'
    '## modify as needed, probably using a range offset.'
    fileName = subRng.Cells(1, 2).Value & "_VSE.htm"

    'Concatenate the filename & path:'
    '## modify as needed.'
    exportFileName = "C:\Users\" & Environ("Username") & "\Desktop\" & fileName

    'Create hte DIV ID:'
    divName = "FileName_10067" '## modify as needed, probably using a range offset.'

    '## Now, create the publish object with the above arguments:'
    Set pObj = wb.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        fileName:=exportFileName, _
        Sheet:=ws.Name, _
        Source:=subRng.Address, _
        HtmlType:=xlHtmlStatic, _
        DivID:=divName, _
        Title:="")

    '## Finally, publish it!'
    pObj.Publish

    '## Hide the last column:'
    rng.Columns(p+1).EntireColumn.Hidden = True

Next

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM