2009-02-06 5 views
3

Oracle 데이터베이스에서 가져온 데이터를 가져 와서 Excel을 사용하여 일부 보고서를 만듭니다. 최근에 우리의 데이터 입력 사용자 중 한 명은 "+"로 항목을 시작했습니다. 엑셀은 그것을 평가하고 adds =를 두려워하는? name # 오류를 표시합니다. 이 오류는 내가 VBA 문자열 위생

If IsError(C.Value) Then 
    C.Value = Replace(C.Value, "=+", "", 1, -1, vbTextCompare) 
End If 

를 사용하여 시도하지만 그건 어디서든 나를 점점되지

오류 2029입니다.

제안 사항?

답변

1

당신이 시도 할 수 있습니다 : Data > Import External Data > Import Data 이것은 당신이 텍스트로 및 원인을 특정 열을 지정 할 수있는 마법사가 실행 +, - 등의 기호는 Excel에서 구문 분석하지 않음

Worksheet("foo").QueryTables.Add 메서드를 통해 VBA에서 수행 할 수 있습니다. 몇 가지 옵션이 있지만 TextFileColumnDataTypes 속성을 사용하면 텍스트로 취급 할 열을 지정할 수 있습니다. 사용중인 마법사의 매크로를 기록한 다음 수정하여보다 쉽게 ​​작업 할 수 있습니다.

데이터를 더 직접적으로 (예 : ADO 또는 DAO를 통해) 읽고있는 경우 셀 C는 =123+456의 수식을 가지고 있다면 데이터가 원래의 솔루션에

Worksheet("foo").Cells(r, c).NumberFormat = "@"


NB를 추가하기 전에 대상 셀을 텍스트 형식으로, 당신은 거의 확실 C.Formula보다는 C.Value보고 싶어 C.Value은 579가됩니다. C.Formula로 사용하여 =123+456

일이 될 것이다 내장이 맥락에서 Replace 방법 다만 한 가지도

+0

barrowc, 최종 답변이 트릭을 돌 렸습니다. .value가 아닌 .formula를 보는 것을 잊었습니다. – CABecker

2

엑셀은 대신 자신의이 기능 : 당신은 텍스트의 데이터가있는 경우/CSV는 다음 파일을

ActiveSheet.Cells.Replace What:="=+", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 
+0

실행할 때 런타임 오류 '438'가 표시되지 않음이 속성 또는 메타를 지원하지 않습니다. od – CABecker

+0

oops - 워크 시트의 모든 셀의 범위 객체를 반환하는 "셀"을 다시 시도하십시오 –

0

, 그것은해야한다 :

If IsError(C.Value) Then 
    C.Value = Replace(C.Formula, "=+", "", 1, -1, vbTextCompare) 
End If 

이 인 = +이기 때문에 값이 아닌 수식 속성에 저장 됨 ... VBA에서 직접 정리를 수행하지 않으려는 경우 C.Value 또는 C.Formula에 replace (...)를 할당 할 수 있습니다.