cancel
Showing results for 
Search instead for 
Did you mean: 

Excel VBO - Paste 사용 중 오류

최우석
Level 3
클립보드에 있는 데이터를 엑셀로 붙여넣기 하려고 합니다

그러나 Paste 사용 중 해당 이미지로 오류가 발생합니다

35117.png
해결방법이 있나요? 엑셀파일은 vbo로 오픈한 상태입니다.

아래는 제가 사용한 코드입니다

Dim wb, excel, range As Object

Try

wb = GetWorkbook(Handle, Workbook)
excel = wb.Application

range = excel.Selection
range.PasteSpecial(Paste:=Paste_Option, Operation:=-4142, SkipBlanks:=False, Transpose:=False)

Success = True

Catch e As Exception
Success = False
Message = e.Message
Finally
wb = Nothing
range = Nothing
End Try
7 REPLIES 7

Dohyeong.Kim
Staff
Staff
안녕하세요 최우석님,

만드신 코드에서 "(Paste:=Paste_Option, Operation:=-4142, SkipBlanks:=False, Transpose:=False)" 이 부분을 삭제하고 실행해봐주시겠어요?

윗 부분은 VisualBasic For Application 형식의 코드로 보이는데요. 실행하시는 방법이 Excel Macro(VBA) 형식이신가요? 아니시면 VisualBasic for Script 이신가요? 혼재되어 있는 것 같습니다.

VisualBasic for Script 형태로는 제가 아래와 같은 코드로 간단히 Test를 해봤습니다.

Dim wb, excel, range

Set ExcelApp = GetObject(,"Excel.Application")
Set MyWorkbook = ExcelApp.ActiveWorkbook
Set MyWorksheet = MyWorkbook.Worksheets("Sheet1")

MyWorksheet.Range("B3").Value = "Writing Test"
MyWorksheet.Range("B4").Select
MyWorksheet.Paste

MyWorksheet.Range("B5").Select
MyWorksheet.Range("B5").PasteSpecial

Set MyActiveCell = MyWorksheet.Range("B6")
MyActiveCell.PasteSpecial



Visual Basic for Application 과 Visual Basic Script 의 코드 차이를 이해하기 좋게 정리한 page 링크를 확인해서 아래에 추가 드립니다. 도움 되시면 좋겠습니다.
https://help.mjtnet.com/article/19-converting-office-vba-to-vbscript

BohyonHwang
Level 9
오류의 종류에는 코드의 오류와 데이터의 오류가 있습니다.
보내주신 소스는 Excel VBO의 Paste 액션의 코드 스테이지입니다.
이 소스는 이미 많은 사용 사례를 가지고 있으므로 이미 검증된 것으로 간주됩니다.
그러므로 보내주신 상황은 데이터의 오류로 추정됩니다.

현재 클립보드에 복사되어 있는 데이터가
엑셀의 해당 위치로 붙여넣기가 가능한 데이터인지 먼저 확인해 주십시오.

#Excel #Clipboard #Paste #PasteSpecial #Range​​​​​

BohyonHwang
Level 9
급히 테스트 해 본 결과 엑셀의 다른 영역을 선택해서 Copy 된 경우에 Paste가 잘 동작하는 것으로 보입니다.
타 응용 프로그램에서 복사한 데이터는 Set Value와 같은 다른 종류의 액션을 선택해서 사용해 보시기 바랍니다.

BohyonHwang
Level 9
VBO를 사용할 경우 API 수준의 상호 작용이라 그런지 제약이 있는 것 같습니다.
임기 응변으로 붙여넣기 기능은 UI 수준으로 작동하는 방안을 구상해 보았습니다.
MS Excel BO를 만들어서 Attach하고 Control-V를 전달하면
클립보드에 저장되어 있는 내용이 모두 붙여넣기가 가능한 것 같습니다.

35115.png

BohyonHwang
Level 9
두 개의 액션을 갖는 MS Excel BO를 첨부합니다.

최우석
Level 3
답변감사합니다.
PasteSpecial의 옵션값을 모두 지우면 정상적으로 작동하는것을 확인했습니다

엑셀 외에 다른 곳에서 복사한 데이터를 선택하여 붙여넣기 기능을 사용할 방법이 있을까요?

BohyonHwang
Level 9
코드 스테이지를 직접 변경하는 것은 권장하지 않습니다.
Paste Special() 함수에서 Paste_Option의 변경은 코드 스테이지의 입력 파라미터 Values Only를 통해서 조정합니다.
코드를 직접 수정하지 말고 파라미터 값을 True에서 False로 변경해서 사용하시길 권합니다.
35116.png
추가적인 방법은 앞의 댓글을 참고하십시오.