0

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 など) を選択し、それら 2 つを HTML ページに公開できるようにすることです。セル参照に基づいたファイルの名前。元。セル W3 の値は 1045 になり、ファイル名は 1045_VSE.htm として保存されます。ここで、_VSE はループ プロセスを通じて一定です。そうすれば、新しい HTML ページの名前はそれぞれ、セル参照に基づいて増加します。HTML ページが保存されたら、列を非表示にして次の列に移動し、すすぎを繰り返します。これに関するどんな助けも素晴らしいでしょう。前もって感謝します。

4

1 に答える 1

0

これをループ内に入れるのはかなり簡単です。

ここに例があります。ファイル名はサブ範囲の最初の行/2 番目の列から取得されると想定しています。これは簡単に変更できます。方法を尋ねれば、変更できます。また、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
于 2013-04-23T02:08:21.260 に答える