2014-12-11 5 views
2

나는 č ...와 같은 문자가 포함 된 VBA 코드를 사용하여 2010 년 Excel에서 프로그램을 만들었습니다. Msgbox ("Čiča gliša") 잘 작동합니다. 그러나 문제는 Excel 2013에서 해당 프로그램을 열 때 해당 문자가 지원되지 않는 것 같습니다. Excel 2013에서 셀 및 셀 수식 인 에서는 지원되지만 VBA에서는 지원되지 않는 것 같습니다. 그런 다음 CODE 실행시 오류가 발생했습니다. VBA는 키보드가 아닌 simbols로 바꿉니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 그것이 언어 설정과 무언가다는 것을 믿는다?!엑셀 VBA (특수 문자)의 특수 문자 (문자)

+1

이미 살펴본 바와 같이 Excel은 셀에서 설정된 전체 유니 코드 문자를 지원합니다.따라서이 문제를 해결하는 한 가지 방법은 ** 자원을 저장하기 위해 숨겨진 시트 **를 사용하는 것입니다. 그런 다음 VBA 코드에서이 숨겨진 시트의 문자열을 문자열 변수로로드 한 다음 어쨌든 사용하십시오. – xmojmr

답변

3

BambiLongGone이 말했듯이 이상한 문자열은 작동하지 않습니다. 가장 좋은 사진은 this article입니다. 응용 프로그램에서 모든 문자열을 변환하는 데 사용할 수있는 VBA에 유니 코드라는 도구가 있습니다. 예를 들어 는 :

Čiča gliša 

ChrW$(&H10C) & "i" & ChrW$(&H10D) & "a gli" & ChrW$(&H161) & "a" 
+0

감사합니다. 그러나 이것을 사용하지 않겠습니다. 프로그램은 cca 1000 시트 및 코드가있는 여러 moduls를 사용하여 창고에서 자재 회계를 처리하기 때문에 Office 2010을 사용하는 몇 대의 컴퓨터 (PC)에서 이미 작동하므로 변환 할 수 없습니다. Office에만 문제가 있습니다. 2013. – Jelovac

2

VBA는 ANSI입니다. Ps in it은 Windows와 상호 작용합니다. UTF16 internaly이고 COM 또한 UTF 16입니다.하지만 파일 형식도 ANSI이므로 wierd 문자열을 입력하면 작동하지 않을 수 있습니다 (그대로 저장할 수 없기 때문에).

그래서 문자 변환은 100 만개의 규칙 (대부분 접근하기 쉬운 방식으로 문서화되지 않음)으로 자동으로 수행됩니다.

문제가있는 경우 바이트 배열에 할당하십시오. 어쩌면 유니 코드 파일에서 폼의 ANSI를 우회 할 수 있습니다.

Yourstring() = "ㅋ ㅋ"문자열 함수에 전달 된 경우

VB 취급 문자열로서 바이트 배열.

0

당신이 나타나는 코드의 모든 부분에서 수동으로 악센트를 쓸 수 있습니다, 당신은 빨리 그것을 할 "대체 &을 찾을 수"를 사용할 수 있습니다로 변환됩니다 . 이 같은 경우 : 다음

MsgBox "Código único" 

을 찾을 및 대체 할 수

[O]에 [ "& 대하 (243) &"]

[U]를 [ "& 대하 (250) & "]

등등 ...

그리고 당신은 얻을 것이다 :

MsgBox "C" & Chr(243) & "digo " & Chr(250) & "nico" 

각 악센트 문자에 대한 코드를 모르는 경우, 당신은 기능 "CODE"로 엑셀 사용할 수 있습니다 당신의 목록을 사용할 수 있습니다, 또한

(기능 샤아는 반대하지 않습니다) 이와 같은 인터넷 :

ASCII Code - The extended ASCII table

난 그냥 같은 문제를 가지고 있었고,이 절차를했다. Visual Studio 코드를 사용하여 매우 빠르게 작업했습니다.