programing

excel의 vba에서 유니코드 문자열

padding 2023. 6. 7. 22:11
반응형

excel의 vba에서 유니코드 문자열

그리스 문자를 라틴 문자로 변환할 대체 문자()를 만들려고 합니다.

문제는 다음과 같이 선언한 후에

Dim Source As String
Source = "αβγδεζηικλμνξοπρστθφω"  

출처는 "ùîõïìóñôõ"âðùïîá▁"▁sourceöí▁isëãæ"로 해석됩니다.
선언 수준에서 유니코드를 사용할 방법이 있습니까?

시도해 보세요StrConv:

StrConv("αβγδεζηικλμνξοπρστθφω", vbUnicode)

출처: http://www.techonthenet.com/excel/formulas/strconv.php

[EDIT] 다른 솔루션:

다음 절차를 통해 모든 그리스 문자(소문자 및 대문자)를 얻을 수 있습니다.

Sub x()
    Dim i As Long

    For i = 913 To 969
        With Cells(i - 912, 1)
            .Formula = "=dec2hex(" & i & ")"
            .Offset(, 1).Value = ChrW$(i)
        End With
    Next i
End Sub

예를 들어, 문자를 찾기 위해 배열을 작성할 수 있습니다.

출처: http://www.excelforum.com/excel-programming/636544-adding-greek-letters.html

[EDIT 2] 원하는 문자열을 만들 수 있는 서브가 있습니다.

Sub greekAlpha()
Dim sAlpha As String
Dim lLetter As Long

For lLetter = &H3B1 To &H3C9
    sAlpha = sAlpha & ChrW(lLetter)
Next
End Sub

앞서 언급했듯이, VBA는 유니코드 문자열을 지원하지만 VBA 편집기는 8비트 코드 페이지에서만 VBA 파일을 인코딩할 수 있기 때문에 코드 내에 유니코드 문자열을 쓸 수 없습니다.Windows-1252.

그러나 원하는 유니코드 문자열에 해당하는 이진을 변환할 수 있습니다.

str = StrConv("±²³´µ¶·¹º»¼½¾¿ÀÁÃĸÆÉ", vbFromUnicode)
'str value is now "αβγδεζηικλμνξοπρστθφω"

메모장을 사용하여 문자열을 변환합니다. 유니코드 문자열을 복사하여 붙여넣고 파일을 유니코드(utf-8 아님)로 저장한 후 ASCII(사실은 Windows-1252임)로 연 다음 처음 두 문자(ÿ) 없이 VBA 편집기에 복사하여 붙여넣습니다(BOM 마커).

당신은 당신의 출처가 "ùîìïõñóîô".âùáõðï▁"▁isö▁your▁that▁youëí▁interpre"로 해석된다고 말합니다.

Visual Basic Editor는 유니코드를 표시하지 않지만 유니코드 문자열 조작을 지원합니다.

Dim strValue As String
strValue = Range("A1").Value
Range("B1").Value = Mid(strValue, 3)
Range("C1").Value = StrReverse(strValue)

A1에 그리스어 문자가 포함되어 있으면 이 코드를 실행한 후 B1과 C1에도 그리스어 문자가 포함됩니다.

즉시 창이나 메시지 상자에서 값을 제대로 볼 수 없습니다.

언급URL : https://stackoverflow.com/questions/7269399/declaring-a-unicode-string-in-vba-in-excel

반응형