2013-07-12 1 views
0

약 30000 개의 항목으로 구성된 로그가있는 큰 Excel 시트가 있습니다.VB 및 .cmd를 사용하여 Excel 시트의 추가 선 제거

내 프로그래머가 removeline.cmd 파일을 생성하여 Excel 파일의 특정 열에있는 여분의 빈 줄을 모두 제거했습니다.

RemoveLine.cmd의 코드 :

cls 
    cd\ 
    SET vbfile=newlinetest.exe 
    K: 
    cd "IPM - CompOps\Ops Docs\avail-stats\Originals" 
    %vbfile% 
    exit 

파일이 제대로 실행하지만, 마지막에 내가 없애려고 본질적으로 무엇이다,이 오류를 표시

Run-time error '1004'; 

    Method '~' of object '~' failed 

편집 :
프로그램 newlinetest.exe은 VB6 (내 컴퓨터에서 액세스 권한이 있음)으로 작성되었습니다. newline.frm에 대한
전체 소스 코드는 다음과 같습니다

oXL.Quit 

Handler: 
oXL.Quit 

두 번째 Quit 호출이 오류를 생성, 실패

VERSION 5.00 
Begin VB.Form Form1 
Caption = "Form1" 
ClientHeight = 4500 
ClientLeft = 3435 
ClientTop = 3585 
ClientWidth = 5175 
LinkTopic = "Form1" 
ScaleHeight = 4500 
ScaleWidth = 5175 
Begin VB.CommandButton Command1 
Caption = "Excel" 
Height = 495 
Left = 1800 
TabIndex = 0 
Top = 3720 
Width = 855 
End 
End 
Attribute VB_Name = "Form1" 
Attribute VB_GlobalNameSpace = False 
Attribute VB_Creatable = False 
Attribute VB_PredeclaredId = True 
Attribute VB_Exposed = False 

Private Sub Command1_Click() 
Dim oXL As Object ' Excel application 
Dim oBook As Object ' Excel workbook 
Dim oSheet As Object ' Excel Worksheet 
Dim oChart As Object ' Excel Chart 

Dim year As String 

Dim i As Long 

Dim MyRowNumber As Long 

Dim Row As Long 

Dim comment As String, newline As String 

Dim curDate As String 

Open "K:\IPM - CompOps\Ops Docs\avail-stats\Originals\Inputavailfile.txt" For Input As #1 

Input #1, Data 

Close #1 




'Start Excel and create a new workbook 
Set oXL = CreateObject("Excel.application") 
Set oBook = oXL.Workbooks.Add 
Set oSheet = oBook.Worksheets.Item(1) 
oXL.Visible = True 
oXL.UserControl = True 

year = Format(Now, "yyyy") 

curDate = Date - 3 

curDate = Format(curDate, "m/d/yyyy") 

Application.DisplayAlerts = False 

Workbooks.Open FileName:="K:\IPM - CompOps\Ops Docs\avail-stats\Originals\" + Data 

Myfile = "K:\IPM - CompOps\Ops Docs\avail-stats\Originals\" + Data 

On Error GoTo Handler 
vOurResult = Cells.Find(What:=curDate, LookAt:=xlWhole).Select 

If (vOurResult = True) Then 

MyRowNumber = ActiveCell.Row 

Set ExcelLastCell = ActiveSheet.Cells.SpecialCells(xlLastCell) 

'MsgBox vOurResult 

Row = ExcelLastCell.Row 
col = ExcelLastCell.Column 

' MsgBox curDate 

Cells(ActiveCell.Row, ActiveCell.Column + 6).Select 



comment = ActiveCell.Text 

newline = Replace(comment, Chr(10), " ") 

ActiveCell.Value = newline 


For i = MyRowNumber To Row - 1 

comment = "" 
newline = "" 

Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 

comment = ActiveCell.Text 

newline = Replace(comment, Chr(10), " ") 

ActiveCell.Value = newline 

Next i 

'MsgBox curDate 


ActiveWorkbook.SaveAs FileName:=Myfile, FileFormat:=xlNormal 

End If 
oXL.Quit 

Handler: 
oXL.Quit 

End Sub 

Private Sub Form_Load() 
Command1_Click 





End 
End Sub 

Private Sub Label1_Click() 

End Sub 

답변

0

당신은 하위의 끝으로이 라인을 가지고있다. 당신은 (만 오류의 경우에 호출됩니다) 핸들러하기 전에 절차를 종료해야합니다

코드 Handler라는 line-label에 '를 통해 떨어진다'때문이다
oXL.Quit 
Exit Sub 

Handler: 
oXL.Quit 
+0

한번 시도해 보겠습니다. –

+0

이 마음에 드십니까? ActiveWorkbook.SaveAs 파일 이름 : = myfile을, 화일 형식 : = xlNormal 끝 oXL.Quit 종료 하위 처리기 경우 : oXL.Quit 종료 하위 –

+0

처럼, 그래, 줄 바꿈없이 얘기하지만 어렵다 그. 시도 해봐. –

0

.
따라서 HandlerMethod 'Quit' of object 'oXL'을 호출하려고하면 oXL이 이미 종료 되었기 때문에 실패합니다.

Handler에 도달하기 전에 명백한 해결책은 Exit Sub입니다. (MSDN에서)

하위의 일반적인 레이아웃 :이 도움이

Sub InitializeMatrix(Var1, Var2, Var3, Var4) 
    On Error GoTo ErrorHandler 
    . . . 
    Exit Sub 
ErrorHandler: 
    . . . 
    Resume Next 
End Sub 

희망!

편집 :
내가 chat이 삭제 된 이후 (나는 신선한 페이지 뷰를 얻을 가정) - 게시 재를 통해 함께 아스 커 도움이 된 원래의 질문을 보인다.
Andy G는 이미이 재 게시에 답변했지만, 나는 대답을 낭비하고 어쨌든 게시하도록 생각하지 않았다. 설명과 참조가 미래의 독자를 도울 수 있기를 바랍니다.

관련 문제