2014-12-09 2 views
0

나는이 문제에 대한 답변을 찾기 위해 웹과 사이트를 샅샅이 조사 했으므로 도움이됩니다.VBScript - 개체 필요 여부 또는 형식 불일치 오류가 발생했습니다.

사용자 지정 Excel 스프레드 시트를 수정하기 위해 VBScript를 만들고 있습니다. 스크립트의 첫 번째 부분은 정상적으로 작동하지만 두 번째 부분은 나에게 힘이되고 있습니다. 첫 번째 열에서 값을 검색하고 발견 된 경우 행을 삭제해야합니다. 지금은 삭제 진술에 대해 걱정할 필요가 없습니다. If Each 문을 제대로 실행하고 If Then 문을 실행할 수 있는지 테스트하여 테스트하고 있습니다. 특정 코드 블록은 다음과 같습니다.

For Each cell in objSheet.Columns("A:A").Cells 

     Set cell = objSheet.Columns("A:A").Cells 

     If cell.Value = "60802400040000" then 
      cell.font.bold = True 

     End If 

Next 

나는 다양한 변형을 시도했으며 올바른 조합을 찾을 수 없습니다. 처음에는 "Object Required"메시지를 얻었고 여러 게시물을 읽은 후에 셀에 대한 Set 문을 삽입해야한다는 것을 알았습니다. 이제 불일치 유형 오류 메시지가 나타납니다.

재미있는 점은 Set 문을 넣기 전에 코드가 실행되지만 스프레드 시트를 닫을 때 Object Required 오류가 발생한다는 것입니다. 추가 한 후 유형 불일치 오류가 즉시 나타납니다.

내가 웹에서 찾은 대부분의 예제는 VBA 용이며 VBS 용으로 수정하려고 시도합니다. VBS 용으로 잘 모르겠습니다. 누구든지 저에게 줄 수있는 도움을 주시면 대단히 감사하겠습니다.

답변

1

cell, cell을 다시 정의하면 For Each 문에 자동으로 정의됩니다.

이 도움의 예는이 라인

Set cell = objSheet.Columns("A:A").Cells 

삭제, 불행하게도 도움말 For EachFor x = n to n 및 기타 수단을 사용하는 사례가 없습니다. For Each은해야 할 일입니다. Set exceldoc = CreateObject("c:\blah\blah.xls)을 다음 Set r = exceldoc.worksheets(0).range("MyRange")을 사용 - 일부 개체는 (응용 프로그램 객체 등) VBA에서 자동으로 사용할 수 있습니다로 VBS에 VBA를 들어

Set r = Range("myRange") 
For n = 1 To r.Rows.Count 
    If r.Cells(n, 1) = r.Cells(n + 1, 1) Then 
     MsgBox "Duplicate data in " & r.Cells(n + 1, 1).Address 
    End If 
Next n 

, 당신은, 개체 및 사용을 만들어야합니다.

또한 vbscript에서 이름을 찾을 수 없으므로 이름이 아닌 상수 값을 사용해야합니다.

+0

도움을 주셔서 감사합니다. BambiLongGone. 제 질문에 대답 해 주셔서 감사합니다. 더 많은 것을 생각한 후에 VBA를 사용하여 Excel 용 추가 기능으로 스크립트를 다시 작성하기로 결정했습니다. 그러나 나중에 참조 할 수 있도록 답을 메모 해 두겠습니다. Heh, 필자는 VB보다 Python을 좋아한다고 말해야합니다. 이해하기가 훨씬 쉽습니다. :) – Heather

관련 문제