2014-02-10 4 views
-1

Selenium WebDriver로 작성된 자동화 된 테스트 응용 프로그램에 대한 테스트를 유지 관리하는 데 사용하는 Excel 2010 스프레드 시트가 있습니다. 스프레드 시트에는 업로드 (데이터베이스로), 가져 오기 (다른 시트에서), 모든 시트 지우기, 다른 시트로 내보내기, 병합 (두 시트) 및 복원 (데이터베이스에서 테스트 스위트) 등 6 개의 ActiveX 단추가 있습니다. 내 문제는 가져 오기 단추를 선택할 때 실행되는 매크로에서 줄 것 같습니다VBA 매크로 충돌 Excel 2010

매크로를 두 시트, 소스 및 대상 걸리고 대상 시트를 지우고 원본 통합 문서의 셀과 데이터를 대상 통합 문서. 거기에서 데이터베이스에 업로드하거나 테스트 응용 프로그램에서 시트에서 실행할 수 있습니다.

몇 주 전에 가져 오기 버튼을 선택할 때 Excel이 손상되었습니다. 나는 웹을 조사하여 효과가있는 해결책을 발견했다. 여기에는 모든 매크로를 사용하지 않도록 설정, 신뢰 문서 및 신뢰할 수있는 위치를 종료, 통합 문서를 다시 컴파일하고 다시 여는 작업이 포함되었습니다. 지난 주말 같은 일이 다시 일어날 때까지이 작업은 2 ~ 3 주 동안 진행되었고 더 이상 작동하지 않았습니다. 여기

는 내가 가지고있는 코드 : 코드는 다음 줄에 충돌되어

numSheets = wrkBook.Sheets.Count 

appName = wrkSheet.Cells(2, 3).Value 

bkPath = Application.GetOpenFilename("Excel Macro-Enabled Workbook (*.xlsm),*.xlsm") 

If bkPath <> "False" Then 

    Call Clear_All(wrkBook, wrkSheet) 

    'get the number of sheets in the source workbook 
    destCnt = wrkBook.Sheets.Count 

    Set importBook = Workbooks.Open(bkPath) 
    For a = 1 To destCnt 
     thsShtName = wrkBook.Worksheets(a).Name 
     'activate the source workbook 
     importBook.Activate 

     'get the numer of sheets in the source workbook 
     srcCnt = importBook.Sheets.Count 

     'loop through each sheet checking title 
     For b = 1 To srcCnt 
      'get the name of the 'a' sheet 
      **srcSheetName = importBook.Worksheets(b).Name** 

      'do more stuff with the source sheet 
     Next b 
Next a 
End If 

을 srcSheetName = importBook.Worksheets 여기 (B) .NAME

내가 발견 한 몇 가지가있다 . importBook 변수가 설정되면 코드가 문제가되는 행에 도달하지 않은 경우에도 조사 식 창에서 변수를 확장 할 수 없습니다. 그러나 매크로는 srcCount (원본 시트의 시트 수)를 성공적으로 가져옵니다. 매크로가 문제가되는 행에 도달하면 Excel에 오류가 발생하여 종료해야한다는 메시지와 일관되게 충돌합니다. 정보가 없으면 Excel이 닫히고 때로는 빈 통합 문서로 다시 시작됩니다.

+0

열려고하는 파일의 시트 중 하나가 손상되었을 수 있습니까? 오류 발생시'b'의 값은 무엇입니까? –

+0

다른 하나를 저장하고, 저장된 시트를 지우고, "손상된"시트의 모든 데이터를 하나씩 복사하여 소스 시트가 손상 될 수 있다는 사실을 조사했습니다. b = 1 (예상대로) 그것은 실패한 줄을 때려줍니다 –

+0

그 줄에 휴식을 취한 다음 즉각적인 창에'? importBook.Name'을 입력하고 마찬가지로'? importBook.Sheets (1) .Name'을 확인하십시오 –

답변

0

확인 ... 부패한 스프레드 시트에 대한 Siddarth Rout의 제안을 듣고 나 자신을 알아 냈습니다. 나는 위에서 설명한 단계를 밟았습니다.

그래서 제가 한 일이 여기에 있습니다.

다른 스프레드 시트 중 하나를 복사하여 지 웠습니다. 가져 오기 매크로를 실행하자마자 이전에 실패한 행을 통과하기 때문에 부패가 문제였던 것 같습니다. 그런 다음 원본 코드를 밟아 가져 오기 매크로를 다시 작성하여 코드를 단순화했습니다. 이제는 잘 작동하는 것 같습니다.

제안 해 주셔서 감사합니다 !!