2016-06-28 4 views
1

그래서 악센트 부호가있는 문자를 일반 문자로 변환하는 VBA 코드를 작성하려고했습니다. 모든 악센트 부호가있는 문자를 상수로, 일반 문자를 다른 상수로 선언했습니다. 하지만 시각 기본 편집기에서 '??'로 인식 할 수 있도록 vba 스크립트에 특정 악센트 부호가있는 문자를 삽입하는 데 문제가 있습니다. 만.Excel 2007 vbe 악센트 부호가있는 문자를 인식하지 않습니다.

Const AccChars = "ŠŽšžŸÀÁÂÃÄÅĀÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿěłļņī" 
Const RegChars = "SZszYAAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyyellni" 

을 그래서 RegChars와 AccChars을 대체 할 수 있음 :

이 내가 할 노력하고있어 것입니다. 내가 VBE하기 위해 위의 라인을 복사 할 때

는 단, 헌장 AccChars는 다음과 같이 나타납니다

Const AccChars = "ŠŽšžŸÀÁÂÃÄ?ĀÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäå?èéêëìíîïðñòóôõöùúûüýÿ?????" 

을 내가 VBE C, E, L, L, N, I, Å와 같은 문자를 사용할 얻을 수있는 방법.

도구 -> 옵션에서 글꼴을 변경하고 심지어 제어판에서 유니 코드가 아닌 프로그램 (시스템 로캘)에 대한 언어를 변경해 보았습니다. 다른 텍스트 파일에서 문자열을 읽으려고했는데 효과적이지 못했습니다.

모든 의견은 높이 평가 될 것입니다.

+0

복사 붙여 넣기 대신 수동으로 입력하려고 했습니까? 어쩌면 '07 엑셀의 클립 보드가 유죄 일 것입니다. – Sgdva

+0

@Sgdva : 예. 수동으로 입력하려고했습니다. 그것은 작동하지 않았다. –

+0

유니 코드 문자 (0-255 범위를 벗어나는 경우)에는'ChrW()'를 사용해야합니다. –

답변

4

의 코드가 255가 넘는 VBE (또는 일반 메시지 상자)를 얻을 수 있다고 생각하지 않습니다. 그러나 적절한 유니 코드 문자를 추가하여 해당 문자를 포함 할 문자열을 구성 할 수 있습니다. 그래서 게시물에 AccChars 문자열 :

Dim AccChars As String 
AccChars = "ŠŽšžŸÀÁÂÃÄÅAÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ" _ 
     & ChrW(283) & ChrW(322) & ChrW(316) & ChrW(326) & ChrW(299) 

그런 다음 번역하려고하는 문자열에 그 문자를 테스트 할 수 있습니다.

편집 (추가 정보) : 당신은 엑셀 세포, 또는 (예 : UserForm.TextBox 등) 유니 코드 문자를 표시 할 수있는 다른 객체에 문자열 AccChars을 작성하는 경우, 당신이 볼 수있는 문자는 적절하게 사용하면 경우에 렌더링 유니 코드 문자가 포함 된 글꼴을 선택하십시오.

+0

작동하지 않는 사람. –

+0

@alex_gabriel 코드를 제공하지 않았고 위의 AccChars 문자열에 공백이 없기 때문에 선택한 코드에 문제가있을 수 있습니다. 게시합니다. Excel 2007이 유니 코드 문자를 지원합니까? –

+0

@alex_gabriel이 코드에는이 스레드에서 생성 한 문자열이 포함되어 있지 않습니다. 출력을 위해 빈 공간을 얻는 것을 재현 할 수도 없습니다. VBA 편집기에서 ** 유니 코드 문자를 ** 표시하도록하려는 경우 이미 대답 할 수 없다고 게시했습니다. [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)에 대한 도움말 항목을 읽고 원래 게시물을 편집하여 현재 가지고있는 새로운 문제를 표시하십시오. –