none
Excel프로세스 다수가 동시에 작업을 할때 "클립보드에 있는 데이터의 크기 및 모양이 선택한 범위와 다릅니다" 이건 엑셀의 버그인가요? RRS feed

  • 질문

  • 안녕하세요? 아래의 질문을 Office질문 게시판에 올렸더니 개발자 질문게시판에 올리라고 하여

    다시 올리게 되었습니다.

    궁금한 사항은 아래와 같습니다.

    엑셀은 현재 MS2010버전을 사용하고 있습니다.

    저는 현재 스크립트를 이용해서

    엑셀을 다수 실행하여 여러가지 작업을 하는

    TestCase를 만들고 있는데요

    엑셀 프로세스가 다수 생성되어

    선택, 복사, 붙여넣기 작업을 동시수행할때

    "클립보드에 있는 데이터의 크기 및 모양이 선택한 범위와 다릅니다" 같은 메세지가 발생합니다.

    이것이 스크립트를 이용한 작업이라서

    당연하게도 언제나 동일한 작업을 하는데요.

    하나만 실행할때는 이상이 없는데.

    다수의 프로세스를 생성하여 작업할때는 이상이 있어 문의 드립니다.

    필요하시다면 아래의

    파이썬 스크립트를 실행하시면

    문제를 즉시 아실수 있을겁니다.

    답변 부탁드립니다.

    '''
    Created on 2014. 5. 17.

    @author

    : chang
    '''
    from System import Type, Activator
    import time
    import datetime
    import thread

    def PrintMsg(str):
    msg = "[" + datetime.datetime.today().ToString() + "] "+ str+ "\n"
    print(msg)

    def TestExcel(location):
    PrintMsg("TestSTART: Excel[" + location.ToString() + "]TEST")
    excel = Activator.CreateInstance(Type.GetTypeFromProgID('Excel.Application'))

    excel.Visible = True
    wb = excel.Workbooks.Add()

    excel.Height = excel.UsableHeight * 1.5
    excel.Width = excel.UsableWidth

    excel.Top = location * 2 * excel.UsableHeight
    excel.Left = 0
    PrintMsg("Test1: Value from 1 to 350")
    for row in range(1,30):
    for column in range(1,10):
    excel.Cells(row,column).Value = (row*10) + column - 10
    time.sleep(0.01)

    PrintMsg("Test2: Copy to Sheet2 from Sheet1")
    for row in range(1,30):
    rowChar = str(unichr(row))
    rageChar = rowChar + "1:"+rowChar+"10"
    workSheet1 = wb.Worksheets("Sheet1")
    workSheet2 = wb.Worksheets("Sheet2")
    if row<5:
    time.sleep(1.5)
    else:
    time.sleep(0.1)

    workSheet1.Activate()
    workSheet1.Range(workSheet1.Cells(row,1),workSheet1.Cells(row,10)).Select()
    workSheet1.Range(workSheet1.Cells(row,1),workSheet1.Cells(row,10)).Copy()
    if row<5:
    time.sleep(3)
    else:
    time.sleep(0.1)
    workSheet2.Activate()
    workSheet2.Range(workSheet2.Cells(row,1),workSheet2.Cells(row,10)).Select()
    wb.Worksheets("Sheet2").Paste()


    PrintMsg("Test3: Change Shape")
    for row in range(1,30):
    workSheet2.Activate()
    workSheet2.Range(workSheet2.Cells(row,1),workSheet2.Cells(row,10)).Font.Bold = True
    workSheet2.Range(workSheet2.Cells(row,1),workSheet2.Cells(row,10)).Font.Size = 24
    workSheet2.Range(workSheet2.Cells(row,1),workSheet2.Cells(row,10)).Font.ColorIndex = 3

    time.sleep(3)
    PrintMsg("Test4: Make Chart")
    workSheet2.Range(workSheet2.Cells(1,1),workSheet2.Cells(30,10)).Select()
    chart = wb.Charts.Add()
    time.sleep(3)
    chart.ChartType = -4102
    time.sleep(3)
    excel.Visible = False

    for i in range(0,4):
    thread.start_new_thread(TestExcel,(i,))

    2014년 5월 20일 화요일 오후 1:26

모든 응답

  • "클립보드에 있는 데이터의 크기 및 모양이 선택한 범위와 다릅니다"

    여러셀 데이타 중에 크기 또는 모양이 다르기 때문입니다.

    데이타 정검 부탁드립니다. 또는 엑셀이 두개 실행시 위와같은 에러가발생되는 이슈가 있습니다.

    [참고 자료]

    [EXCEL TIP]엑셀 선택하여 붙여넣기 오류와 통합 문서의 내용을 복구 에러 해결팁

    제시해 드린 답변이 도움이 되었기를 바랍니다.
       
    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다


    2014년 5월 21일 수요일 오전 2:01
    중재자