2019년 7월 26일 금요일

vba 로 color=#ffffff 태그 깨진 것 찾기

시간이 너무 없었다.

태그가 어디에서 깨졌는지 모르겠는데, 처리해야 할 스트링 양이너무 많았다.

남은시간은 30분 정도...

그래서 TAG verifty 관련하여 vba 툴을 검색하다가 시간이 없어서 대충 몇가지 조건으로 거르도록 했다.
아래는 3가지 조건이다.

1. TAG 꺽쇄가 짝수인가.
2. TAG가 OPEN CLOSE 로 구성되어있는가.
3. TAG 에 알 수 없는 다양한 미스로 인해 결과문에 태그의 일부가 노출되는가.

아래 코드는 부끄럽지만, 빠르게 확인해보기 위한 것이니까 그냥 작성했다.
에러가 발생한 내용에는 "#COLOR_TAG_ERROR"를 담아 리턴하기로 한다.


Function checkColorTagVerify(str_)
' "Microsoft VBScript Regular Expressions 5.5"  를 선택하고 실행하여야한다

'검사할 문장
Dim sText As String
sText = str_

'태그 꺽쇄 갯수를 찾아서 나머지가 발생하면 에러로 간주
Dim charactercountA As Integer
Dim charactercountB As Integer

charactercountA = Len(str_) - Len(Replace(str_, "<", ""))
charactercountB = Len(str_) - Len(Replace(str_, ">", ""))

'Debug.Print (charactercountA)
'Debug.Print (charactercountB)

If charactercountA Mod 2 > 0 Then
sText = "#COLOR_TAG_ERROR"
End If

If charactercountB Mod 2 > 0 Then
sText = "#COLOR_TAG_ERROR"
End If

'혹시 모를 나머지 검사...
Dim find_ As Integer '시작 태그 깨짐으로 color= 만 남는 경우
Dim find2_ As Integer '끝 태그 깨짐으로 /color 만 남는 경우
Dim find3_ As Integer '시작태그는 있는데 끝 태그가 없는 경우,
Dim find4_ As Integer '시작태그는 있는데 끝 태그가 없는 경우의 반대

'Debug.Print (sText)


find3_ = InStr(sText, " 0 And find4_ = 0 Then
    sText = "#COLOR_TAG_ERROR"
End If

If find4_ > 0 And find3_ = 0 Then
    sText = "#COLOR_TAG_ERROR"
End If


'정규식 시작

Dim regEx
Set regEx = New RegExp

regEx.Pattern = "<[^>]+>"  '--- html tag match를 위한 정규식
regEx.IgnoreCase = True
regEx.Global = True
sText = regEx.Replace(sText, "")

'Debug.Print sText

'정규식 끝


find_ = InStr(sText, "color=")
find2_ = InStr(sText, "/color")

If find_ > 0 Then
    sText = "#COLOR_TAG_ERROR"
End If

If find2_ > 0 Then
    sText = "#COLOR_TAG_ERROR"
End If

checkColorTagVerify = sText

End Function



테스트결과







2019년 7월 1일 월요일

Excel 파일 Compare 하기

COM 추가기능에 Inquire 를 추가하면 Excel 파일을 비교하는 기능을 사용할 수 있다.

Inquire 추가 방법