2017-10-19 179 views
0

任何人都可以帮助我使此代码可行吗?将Excel内容转换为HTML(从Excel创建HTML文件)

这里的想法是收集一行信息在不同的行上,并将这些信息一起插入到一个html文件中。

在代码中的一些特殊待遇时,我会很感谢你:

1)使其工作8P; 2)某种方式让用户选择他将要保存文件的地方,如普通的保存窗口(如果不可能,至少让他选择指定文件夹中文件的名称);和3)确保代码捕获行上所有非空行。

非常感谢社会各界的关注!

我想到的是波纹管。

Sub CreateHTML() 
'Define your variables. 
    Dim iRow As Long 
    Dim iStage As Integer 
    Dim iCounter As Integer 
    Dim iPage As Integer 

    'Create an .htm file in the assigned directory. 
    Dim sFile As String 
    sFile = "J:\GEROC1\Avaliação RO\4) CICLOS\ArquivosExportados" & "\test.html" 
    Close 

    'Open up the temp HTML file and format the header. 
    Open sFile For Output As #1 
    Print #1, "<html>" 
    Print #1, "<head>" 
    Print #1, "<style type=""text/css"">" 
    Print #1, "table {font-size: 16px;font-family: Optimum, Helvetica, sans-serif;Border -collapse: collapse}" 
    Print #1, "tr {border-bottom: 1px solid #A9A9A9;}" 
    Print #1, "td {padding: 4px; margin: 3px; padding-left: 20px; width: 75%; text-align: justify;}" 
    Print #1, "th { background-color: #A9A9A9; color: #FFF; font-weight: bold; font-size: 28px; text-align: center;}" 
    Print #1, "</style>" 
    Print #1, "</head>" 
    Print #1, "<body>" 
    Print #1, "<table class=""table""><thead><tr class=""firstrow""><th colspan=""2"">Ficha de Risco</th></tr></thead><tbody>" 

    'Start on the 2nd row to avoid the header. 
    iRow = 2 

    'Translate the first column of the table into the first level of the hierarchy. 
    Do While WorksheetFunction.CountA(Rows(iRow)) > 0 
     If Not IsEmpty(Cells(iRow, 23)) Then 
     For iCounter = 1 To iStage 
      'Print #1, "</ul>" 
      iStage = iStage - 1 
     Next iCounter 
     Print #1, Cells(iRow, 1).Value 
     iPage = iPage + 1 
     If iStage < 1 Then 
      iStage = iStage + 1 
     End If 
     End If 
    Loop 

    'Add ending HTML tags 
    Print #1, "</body>" 
    Print #1, "</html>" 
    Close 
End Sub 
+0

您不在循环中添加任何HTML。你需要在表格中添加'tr'和'td'。 – Patrick

+0

Ops我忘了提及...他正在打印的单元格已经有tr和td语句... – PunchTheNewbie

回答

0

下面的代码将在您的excel文件中创建一个html文件。它将写入整个表格并搜索行和列的数量,以写出所有显示的内容。

请确保编辑表本身的html部分。在我的例子中,我想转换行和列并逐一打印。

另外,如果你想要一个带有标题的表格主标题,请务必进行调整。记得调整colspan。

本示例可以调整为将任何表写入html文件。

最后,我放了一些额外的地方,它会问你你要保存文件的位置。

Sub CreateHTML() 
    'Define your variables. 
    Dim iRow As Long 
    Dim tRow As Long 
    Dim iStage As Integer 
    Dim iCounter As Integer 
    Dim iPage As Integer 
    Dim lastCol As Integer 
    Dim lastRow As Integer 

    'Find the last Column Number 
    With ActiveSheet 
     lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    End With 

    'Find the last Column Row 
    With ActiveSheet 
     lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 

    'Create an .html file in the assigned directory. 
    Dim sFile As Variant 

    sFile = Application.GetSaveAsFilename(fileFilter:="HTML Files (*.html), *.htm") 

    If fileName <> False Then 
    SaveWorkbook = fileName 
    End If 

    'Open up the temp HTML file and format the header. 
    Open sFile For Output As #1 
    Print #1, "<html>" 
    Print #1, "<head>" 
    Print #1, "<style type=""text/css"">" 
    Print #1, "table {font-size: 16px;font-family: Optimum, Helvetica, sans-serif; border-collapse: collapse}" 
    Print #1, "tr {border-bottom: thin solid #A9A9A9;}" 
    Print #1, "td {padding: 4px; margin: 3px; padding-left: 20px; width: 75%; text-align: justify;}" 
    Print #1, "th { background-color: #A9A9A9; color: #FFF; font-weight: bold; font-size: 28px; text-align: center;}" 
    Print #1, "td:first-child { font-weight: bold; width: 25%;}" 
    Print #1, "</style>" 
    Print #1, "</head>" 
    Print #1, "<body>" 
    Print #1, "<table class=""table""><thead><tr class=""firstrow""><th colspan=""2"">INSERT TABLE MAIN HEADER HERE - WATCH OUT FOR TABLE COLSPAN</th></tr></thead><tbody>" 

    'Translate the first column of the table into the first level of the hierarchy. 
    tRow = 1 

    'Start on the 2nd row to avoid the header. - iRow=2/tRow is the table header 
    For iRow = 2 To lastRow 


    For iCounter = 1 To lastCol 

    'EDIT HERE TO CHANGE IT TO YOUR LINKING 
    Print #1, "<tr><td>" 
    Print #1, Cells(tRow, iCounter).Value 
    Print #1, "</td><td>" 
    Print #1, Cells(iRow, iCounter).Value 
    Print #1, "</td></tr>" 

    Next iCounter 
    Next iRow 

    'Add ending HTML tags 
    Print #1, "</body>" 
    Print #1, "</html>" 
    Close 
    End Sub