宏将Excel单元格中的粗体文本转换为强标记

时间:2017-05-25 05:27:20

标签: excel vba excel-vba

我需要在Excel工作表中转换文本。如果单元格中间包含粗体文字,我需要在其周围添加HTML <strong>标记。我需要这个,因为我想将文本插入数据库。

我收到了几张Excel表格,其中包含大量不同语言的翻译。虽然我使用这样的表来生成SQL语句,但这次因为需要保留的格式而不同。

我通常只是转换文本然后连接成SQL语句。但是这次我还需要一个宏/函数来为文本添加<strong>标签:我不想手工完成,因为如果原始文本发生变化,我会手动重做修改。

1 个答案:

答案 0 :(得分:1)

<强>答案

我在工作表中添加了一个新的宏函数。我为此创建了一个模块,并将该功能添加到模块中。这允许我在公式中间使用熟悉的Excel函数表示法来调用它。

  1. 打开VBA编辑器(Windows上的Alt + F11 / Mac上的Fn + Option + F11
  2. 如果您还没有模块,请右键单击 VBAProject
  3. 选择插入&gt;&gt;模块
  4. 向模块添加代码
  5. 我想出了以下功能:

    Function AddStrongTags(ByVal aCell As Range) As String        
        Dim result As String
        Dim isBold As Boolean
    
        isBold = False
    
        For i = 1 To Len(aCell.Value)
            If aCell.Characters(i, 1).Font.FontStyle = "Bold" Then
                If isBold = False Then
                    result = result + "<strong>"
                    isBold = True
                End If
            Else
                If isBold = True Then
                    result = result + "</strong>"
                    isBold = False
                End If
            End If
            result = result + aCell.Characters(i, 1).Text
        Next i
    
        If isBold = True Then
            result = result + "</strong>"
        End If
    
        AddStrongTags = result
    End Function
    

    例如,要在单元格A2上运行该函数,我将键入所需的单元格:

    =AddStrongTags(A2)

    这将生成没有粗体格式但添加了<strong>标记的文本。

    该函数返回一个字符串,因此可以用它连接到我的SQL语句中。例如,这是一个使用new函数创建SQL语句的简化示例,我将输入一个空单元格:

    ="INSERT INTO Foo ( lang, text ) VALUES ( 'en-GB', '" & AddStrongTags(A2) & "' )"