2011-07-06 4 views
2

나는 기호 삽입하기 위해 노력하고있어에서 특수 문자를 추가 - 흰색 사각형 (유니 코드 25A1) Excel 스프레드 시트로를하지만 계속 점점 오류 :델파이 - 엑셀

나는 아무 소용이와 함께 다음과 같은 시도 :

1. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=ChrW(&H25A1)'; 

2. WorkSheet.Cells[CurrRow,CurrCol].Formula := '=Char(25A1)'; 

그리고 실행중인 매크로는 '?'

정말 누군가가 당신은 아마 Excel에서 #VALUE!으로 셀에 표시되는 오류 메시지가 점점이

+0

"계속 오류가 있습니다."너무 도움이되지 않습니다. 어떤 오류가 있습니까? –

+0

왜 그렇게하고 싶습니까? 'Char (25A1)'의 결과는 상수 일 수 있습니다. 수식없이 유니 코드 char을 셀 값에 직접 입력하지 않으면 어떻습니까? –

+0

델파이 버전으로 업데이트하십시오. 항상 그렇게하는 것이 중요합니다. –

답변

3

Excel에 대한 COM 인터페이스는 유니 코드 API입니다. Excel은 내부적으로 유니 코드 문자열로 작동합니다. Delphi WideString에서 Excel로 특수 문자를 전달하십시오. Excel 수식이 필요하지 않습니다.

WorkSheet.Cells[CurrRow,CurrCol].Value := WideString(#$25A1); 

당신이 당신의 소스 코드를 수정 UTF-8 파일을 만들 경우 다음 소스 코드에서 유니 코드 문자를 포함 할 수 있습니다 델파이의 유니 코드 버전 (즉, 2009 이상)를 사용하는 경우.

WorkSheet.Cells[CurrRow,CurrCol].Value := WideString('□'); 

비 ANSI 문자 추가를 시작하면 IDE에서 원본 파일을 UTF-8로 변환합니다.

+0

이 줄이 작동했습니다. 너 너무 많이.이 한 줄로 거의 세 시간을 보냈다. – Amiru

1

좀 도와줬으면. 하나는 정상적인 번호를 원할 때 그것을 16 진수 문자열로 보냅니다. 또 다른 경우 Char 함수에 허용되는 범위를 벗어나는 숫자를 지정합니다. CHAR의 엑셀 도움말을 구체적으로 : 당신이 원하는 캐릭터

수 1 사이 지정 255. 문자 Excel이 어떤 ChrW 기능을하지 않는 것 같습니다 컴퓨터

에서 사용 설정에서 문자입니다. 그리고 숫자 값을 받아 유니 코드 문자로 변환하는 함수를 찾을 수 없습니다.

유니 코드 문자를 삽입하는 방법은 키보드에서 숫자 값을 사용하거나 (alt 키를 누른 채로) 삽입 메뉴, 텍스트, 기호, 유니 코드 (hex)를 사용하는 것입니다. 키보드 입력을 시뮬 레이팅 할 수 있어야하며 COM 모델을 통해 메뉴를 사용할 수 있어야하지만 문자 선택의 유무가 확실하지 않아야합니다.

WorkSheet.Cells[CurrRow, CurrCol].Value := Chr(#$25A1); 

그리고 난 단지 델파이 사용하고 있습니다 : 당신은 엑셀 세포로 델파이에서 유니 코드 텍스트를 삽입 할 수있는 방법을 찾고 있다면

은 모든 당신이해야한다, 모든 것을 말해 두 겠는데,이다 (!) Chr 기능은 당신이했기 때문입니다. Delphi 소스에서 셀에 필요한 문자를 포함하는 텍스트 문자열을 지정하면됩니다.

+0

안녕하세요 Marjan, 답장을 보내 주셔서 감사합니다. 내가 정말로 삽입하고 싶은 것은 Excel의 셀 안의 흰색 사각형입니다. 그래서 당신이 보여준 코드는 작동하지 않았습니다. 나는 완전히 잃어 버렸습니다. – Amiru

+0

@Amiru : 예, 죄송합니다. @David가 맞았던'#'과 WideString으로의 변환을 잊어 버렸습니다. –