2017-01-27 5 views
0

Excel VBA 붙여 넣기 특수 값이 붙여 넣기 값 연산을 수행 할 때 데이터 형식을 텍스트로 변경하는 문제가 발생했습니다. 텍스트 대신 숫자/날짜를 볼 것으로 예상되는 다운 스트림 수식을 나눕니다. 높은 수준에서 Excel VBA 붙여 넣기 특수 값의 데이터 형식을 숫자/날짜에서 텍스트로 변경하지 못하도록하는 방법

는, 내가 가지고있는 프로세스는 다음과 같다 :

  1. 기능 워크 시트를 시작으로 복제하고 이름을 변경;

  2. 복사, 붙여 넣기 특수 값을 포함하여 새로 생성 된 시트에서 작업을 수행합니다.

  3. 데이터 형식이 텍스트로 변경 되었기 때문에 붙여 넣은 데이터에 의존하는 수식이 이제 손상되었습니다. 특수 값을 붙여 복사를하고있다

코드는 다음과 같습니다

Workbooks("myFile.xlsm").Sheets(pageFocus).Range(refreshCopyRange).Copy 

Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial (xlPasteValues) 

수정의 어떤 종류가 있나요하거나 데이터를 변경하는 엑셀 VBA를 중지 할 것 PasteSpecial (xlPasteValues)를 오버라이드 (override) 유형?

사전 도움을 주셔서 감사합니다.

+0

나는 당신의 문제를 재현 할 수 없습니다 여기

Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial xlPasteValues Workbooks("myFile.xlsm").Sheets(pageFocus).Range(pasteRange).PasteSpecial xlPasteFormats 

은 샘플입니다 귀하가 제공하는 정보. 복사/붙여 넣기 특수 값 코드를 수행 할 때 다양한 유형의 숫자 ​​데이터가 숫자로 남아 있습니다. 문제를 재현 할 수있는 충분한 정보를 제공해주십시오. 나는 [최소한의 완전하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve)을 읽어 보시기 바랍니다. 일부 항목의 서식이 변경 될 수 있지만 숫자로 유지되며 TExt –

+0

감사합니다. Ron. 내 문제의 일부인 API를 통한 소스 데이터베이스가 "날짜"에 대해 반환 된 데이터 유형과 일치하지 않는다는 사실이 드러났습니다. 때로는 데이터베이스에 대한 API 호출이 숫자/날짜를 반환하고 다른 필드의 경우 텍스트를 반환합니다. 붙여 넣기 특별 값이 여기와 같은 비난을 받았다고 믿게하는 포럼에서 다른 토론을 발견했습니다. http://stackoverflow.com/questions/28000600/excel-paste-special-using-values-only-also-copies 가치 유형의 데이터 유형 ... 그러나 대부분 내 경우에는 데이터베이스 문제였습니다. 그래서 항상 숫자/날짜가되도록 API 다음에 변환 공식을 만들었습니다. – RMF

+0

신뢰할 수있는 출처가 아니라고 생각합니다. 그것은 두 개의 downvotes가 있으며 스레드에 표시된 대답이 없다는 것을 유의하십시오. API 호출로부터 오는 다양한 형식에 관해서는 API 날짜가 유효하지만 Windows 지역 설정 (예 : mdy 대 dmy)과 일치하는 형식이 아닌 경우가 자주 있습니다. 그러한 일이 발생하면 날짜와 같은 텍스트와 실제 날짜가 혼합되어 나타납니다. 실제 날짜는 대부분 ** 잘못된 ** 일 것입니다. 예 : DB에서'6/2/2017'은 실제로'2017 년 2 월 2 일 '일 것입니다.'2017 년 6 월 2 일 '일 수 있습니다. 번역하는 방법에주의하십시오. –

답변

1

당신이

.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ 
      xlNone, SkipBlanks:=False, Transpose:=False 
+0

나는 여전히 테스트 중이지만이 작품은 믿습니다 - 대단히 감사합니다! – RMF

1

당신은 형식에 대한 두 번째 붙여 넣기 명령을 할 필요가 사용할 수 있습니다
https://social.msdn.microsoft.com/Forums/office/en-US/b593e52c-910c-4d24-b738-65878fe8a50d/how-to-copypaste-range-values-and-formats?forum=exceldev

+0

값 앞에 형식을 붙여 넣어야합니다 –

+0

감사합니다. Bookeater와 Tim Williams - 귀하의 솔루션이 Datatoo의 제안과 동일한 라인에서도 작동 할 수 있다고 생각합니다. – RMF