如何比较Excel和Access之间的文本格式(如颜色,粗体等)

时间:2014-04-07 10:47:01

标签: excel ms-access excel-vba sharepoint sharepoint-2010 vba

事实上,我现在正在做的是实现Excel和Sharepoint的同步,这意味着Excel可以通过更新Sharepoint进行更新,对于相反情况也是如此。

众所周知,MS 2003对此没有任何问题,但MS 2010只能实现Sharepoint的功能 - > Excel,但不是相反的方式。

所以我想添加Access因为存在Access< - > Sharepoint,等等,如果我能实现Excel功能 - >访问,这将解决我的问题。

我为此完成了一些宏的部分,现在我已经意识到了同步的基本功能。但是,在处理文本格式方面存在一些困难。在Sharepoint和Access中,表达颜色就是这样 <div><font color = "#ff0000">TEXT</font></div>,但是在excel中我不知道字符串的表达式。

那怎么办?所有的建议或答案将不胜感激。

1 个答案:

答案 0 :(得分:1)

这是一个非常广泛的问题,涵盖了很多可能性,这不是完整的答案,但是为了比较HTML和VBA格式,您需要单独细分每个格式选项并将其从HTML转换为VBA并确定应用于文本的属性,如上所述。然后,您需要单独的VBA函数来指定要从文本中比较的内容。


话虽如此,这只是一个如何实现字体颜色比较的例子。

鉴于:

'example html: <div><font color = "#ff0000">TEXT</font></div>
Dim HTML_text : HTML_text = "<div><font color = '#ff0000'>TEXT</font></div>"
Dim font_color : fontcolor = Mid(HTML_text, instr(HTML_text, "#"), 7)

将返回&#34;#ff0000&#34;作为变量font_color然后你需要excel函数将十六进制(#FF0000)转换为RGB(取自 - &gt; Here):

Public Function HEXCOL2RGB(ByVal HexColor As String) As String
Dim Red As String
Dim Green As String
Dim Blue As String
Color = Replace(HexColor, "#", "") 
Red = Val("&H" & Mid(HexColor, 1, 2)) 
Green = Val("&H" & Mid(HexColor, 3, 2))
Blue = Val("&H" & Mid(HexColor, 5, 2))
HEXCOL2RGB = Red & "," & Green & "," & Blue
End Function

然后,要将Excel中的字体RGB提取为您从HTML收到的RGB,您需要以下功能(取自 - &gt; Here):

Function FontColorRGB(Target As Range) As String
Dim N As Double
N = Target.Font.Color
FontColorRGB = Str(N Mod 256) & "," & Str(Int(N / 256) Mod 256) & "," & Str(Int(N / 256 / 256) Mod 256)
End Function

然后最终将它们全部拉到一起,你将使用这两个函数:

Dim XLFontClr : XLFontClr = FontColorRGB("A1:A2")
Dim RGB_clr : RGB_clr = HEXCOL2RGB(font_color) 'Returns "Red,Green,Blue" in string form.

If XLFontClr = RGB_clr Then
     msgbox "web formatting and excel formatting compared successfully" 
End If