我一直在研究这个问题,而对于我的生活,我无法弄清楚我错过了什么。我错过了'Next'或'Do',但看起来我已经拥有了它。
感谢任何帮助。
Do
ufCCB.Show
If Continue = True Then
iret = iim1.iimInit
iret = iim1.iimSet("UNAME", UN)
iret = iim1.iimSet("PWORD", PW)
iret = iim1.iimPlay("VH-ccb-logIn-User")
If iret = 1 Then
retry = False
Else
TryCount = TryCount + 1
iret = iim1.iimExit
End If
If TryCount = 2 Then
retry = False
MsgBox "Alas my friend, you have inputted the wrong password twice. Please try again."
Continue = False
End If
Else
retry = False
End If
Loop Until retry = False
' Set iim1 = CreateObject("imacros")
' iret = iim1.iimInit
' iret = iim1.iimSet("UNAME", UN)
' iret = iim1.iimSet("PWORD", PW)
' iret = iim1.iimPlay("VH-ccb-logIn-User")
TotalFailures = 0
iret = iim1.iimPlay("VH-CCB-Reset")
'Application.Wait (Now() + "00:00:01")
'Step AD: Insert Last Start Time/Date
ThisWorkbook.Sheets("Control").Cells(2, 2) = Now()
ThisWorkbook.ActiveSheet.Select
'Continue is set from the Login to confirm that CC&B is open and ready
If Continue Then
iret = iim1.iimPlay("VH-CCB-reset")
Else: GoTo IThinkWereDoneHere
End If
Do
TryCount = 0
AssignCurrentVars:
'Restart the browser if too many errors occur.
If TotalFailures = 3 Then
iret = iim1.iimExit
End If
For Each ws In Workbooks("ElecOpsCSD_FollowUp_iMacro.xlsm").Worksheets
ws.Select
If ws.Name <> "Control" And ws.Name <> "OutputArchive" And ws.Name <> "CC&B_Process" Then
ws.Activate
If ThisWorkbook.ActiveSheet.Cells(RowCntr, 1).Value <> "" Then
If ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = "" Then
Do
FieldOrderID = ThisWorkbook.ActiveSheet.Cells(RowCntr, 1).Text
If Len(FieldOrderID) < 3 Then
FieldOrderID = ""
TryCount = TryCount + 1
If TryCount = 3 Then
GoTo IThinkWereDoneHere
End If
End If
FO_Status = ThisWorkbook.ActiveSheet.Cells(RowCntr, 2).Text
FO_Comments = ThisWorkbook.ActiveSheet.Cells(RowCntr, 3).Text
Badge_Number = ThisWorkbook.ActiveSheet.Cells(RowCntr, 4).Text
Device_Type = ThisWorkbook.ActiveSheet.Cells(RowCntr, 5).Text
Install_Time = ThisWorkbook.ActiveSheet.Cells(RowCntr, 6).Text
Removal_Time = ThisWorkbook.ActiveSheet.Cells(RowCntr, 7).Text
SA_Status = ThisWorkbook.ActiveSheet.Cells(RowCntr, 8).Text
SA_Start_Date = ThisWorkbook.ActiveSheet.Cells(RowCntr, 9).Text
SA_Start_Meter_Read = ThisWorkbook.ActiveSheet.Cells(RowCntr, 10).Text
Dispatch_Group = ThisWorkbook.ActiveSheet.Cells(RowCntr, 11).Text
Status = ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Text
'User Initiated Stop Point
If QUITTER = True Then
MsgBox ("Process Halted by User")
GoTo IThinkWereDoneHere
End If
'Error Handler
If FieldOrderID = "" Then
TryCount = TryCount + 1
RowCntr = RowCntr + 1
If TryCount = 3 Then
MsgBox ("Encountered records missing Field Order ID. Process Complete.")
GoTo IThinkWereDoneHere
End If
GoTo AssignCurrentVars
End If
'Skip records that have already been processed, even partially.
If Status <> "" Then
RowCntr = RowCntr + 1
GoTo AssignCurrentVars
End If
'Step 01a: Go to "Account Information" tab
iret = iim1.iimPlay("IH-CCB-AcctInfo")
'Step 02a: Click the Premise context menu and select "Go To Field Order"
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_Premise_FO")
'Step 03a: Enter FOID, provided by the spreadsheet, into "Field Order ID" field and click related binoculars/search button.
iret = iim1.iimSet("FieldOrderID", FieldOrderID)
iret = iim1.iimPlay("IH-ElecOPSCSD-Input_FOID")
'Step 04a: Extract Field Order Status
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_FO_Status")
If iret = -1 Then
Status = "Stated Field Order ID doesn't exist in CC&B."
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
iret = iim1.iimSet("UNAME", UN)
iret = iim1.iimSet("PWORD", PW)
iret = iim1.iimPlay("VH-ccb-logIn-User")
Else:
FO_Status = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 2).Value = FO_Status
Status = "FO_Status has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
End If
'Step 04b: Extract Comments
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_FO_Comments")
FO_Comments = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 3).Value = FO_Comments
Status = "FO_Comments have been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'Step 04c: Extract Dispatch Group
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_Dispatch_Grp")
Dispatch_Group = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 11).Value = Dispatch_Group
Status = "Dispatch_Group has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'Step 05a: Go to 'Activities' tab
iret = iim1.iimPlay("IH-CCB-GoTo_FOMain_FOActivities")
'Step 06a: Go to 'Service Point ID' context menu, and select "Go To Service Point"
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_SPIDContext_SP")
'Step 07a: Go to 'Device History' tab
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_DeviceHistory")
'Step 08a: Extract Badge Number
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_Badge")
Badge_Number = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 4).Value = Badge_Number
Status = "Badge_Number has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'Step 08b: Extract Device Type
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_Device_Type")
Device_Type = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 5).Value = Device_Type
Status = "Device_Type has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
If Badge_Number = "#EANF#" Or Device_Type = "#EANF#" Then
Status = "No device history exists"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
GoTo Step09a
Else:
GoTo Step08c
End If
'Step 08c: Extract Install Date/Time
Step08c:
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_InstallTime")
Install_Time_PreTrim = iim1.iimGetLastExtract(1)
Install_Time = Left(Install_Time_PreTrim, 10)
'Install_Time = Replace(Install_Time, "-", "/")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 6).Value = Install_Time
Status = "Meter Install_Date/Time has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'Step 08d: Extract Removal Date/Time
'iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_RemovalTime")
'Removal_Time = iim1.iimGetLastExtract(1)
'ThisWorkbook.Sheets("Input&Output").Cells(RowCntr, 7).Value = Removal_Time
'Status = "Meter Removal_Date/Time has been extracted"
'ThisWorkbook.Sheets("Input&Output").Cells(RowCntr, 12).Value = Status
'Step 09a: Go to 'SP/SA' tab.
Step09a:
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_SPSA")
'Step 09c: Go To 'Start Meter Read' context menu
If Badge_Number = "#EANF#" Or Device_Type = "#EANF#" Then
GoTo Step09b2
Else:
GoTo Step09c
Step09c:
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_StartMeterRead")
End If
'Step 09d: Extract Register Reading.
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_MeterRead")
SA_Start_Meter_Read = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 10).Value = SA_Start_Meter_Read
Status = "SA_Start_Meter_Read has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
If Badge_Number = "#EANF#" Or Device_Type = "#EANF#" Or Removal_Time = "#EANF#" Or SA_Start_Meter_Read = "#EANF#" Then
Status = "No device history exists"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'iret = iim1.iimPlay("VH-CCB-reset")
'RowCntr = RowCntr + 1
'GoTo AssignCurrentVars
End If
GoTo Step09b
'Step 09b: Go to 'Service Agreement' context menu and select "Go To Service Agreement"
'iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_SPSA_SA_SA")
Step09b2:
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_SA")
GoTo Step10
Step09b:
iret = iim1.iimPlay("IH-ElecOpsCSD-GoTo_Back_SA")
'Step 10a: Extract SA Status
Step10:
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_SAStatus")
SA_Status = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 8).Value = SA_Status
Status = "SA_Status has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
'Step 10b: Extract SA Date
iret = iim1.iimPlay("IH-ElecOpsCSD-Extract_SADate")
SA_Start_Date = iim1.iimGetLastExtract(1)
ThisWorkbook.ActiveSheet.Cells(RowCntr, 9).Value = SA_Start_Date
Status = "SA Start_Date has been extracted"
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
If Install_Time <> "" And SA_Start_Date <> Install_Time Then
Status = "SA Start Date and Meter Install Dates do not match."
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
GoTo Step11
Else:
Status = "Completed. Necessary information extracted."
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
End If
GoTo Step11
'Step 11: Replace #EANF# with null values for better readability
Step11:
If Badge_Number = "#EANF#" Then
Badge_Number = Replace(Badge_Number, "#EANF#", "")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 4).Value = Badge_Number
Else:
End If
If Device_Type = "#EANF#" Then
Device_Type = Replace(Device_Type, "#EANF#", "")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 5).Value = Device_Type
Status = "No Meter set."
ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value = Status
Else:
End If
If SA_Start_Date = "#EANF#" Then
SA_Start_Date = Replace(SA_Start_Date, "#EANF#", "")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 9).Value = SA_Start_Date
Else:
End If
If SA_Status = "#EANF#" Then
SA_Status = Replace(SA_Status, "#EANF#", "")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 8).Value = SA_Status
Else:
End If
If SA_Start_Meter_Read = "#EANF#" Then
SA_Start_Meter_Read = Replace(SA_Start_Meter_Read, "#EANF#", "")
ThisWorkbook.ActiveSheet.Cells(RowCntr, 10).Value = SA_Start_Meter_Read
Else:
End If
'Step 12a: Reset CC&B.
iret = iim1.iimPlay("VH-CCB-reset")
Loop Until QUITTER = True Or RowCntr = 10000
ElseIf ThisWorkbook.ActiveSheet.Cells(RowCntr, 1).Value <> "" Then
RowCntr = 2
GoTo AssignCurrentVars
ElseIf ThisWorkbook.ActiveSheet.Cells(RowCntr, 12).Value <> "" Then
End If
End If
Workbooks("ElecOpsCSD_FollowUp_iMacro.xlsm").Activate
'RowCntr = 2
Next ws '**THIS IS WHERE I AM GETTING THE COMPILE ERROR**
Loop Until ws.Name = "CC&B_Process"
IThinkWereDoneHere:
ThisWorkbook.Sheets("Control").Cells(4, 2) = Now()
ThisWorkbook.Save
iret = iim1.iimExit()
End Sub
答案 0 :(得分:0)
我找不到丢失的循环或下一个迭代器,但是您发布的代码缺少If
行:
If ws.Name <> "Control" And _
ws.Name <> "OutputArchive" And ws.Name <> "CC&B_Process" Then
似乎没有任何结尾End If
。
看起来应该放在Next ws
行之前(我的猜测):
End If
Next ws
Loop Until ws.Name = "CC&B_Process"
你对GoTo
的自由使用被认为是不好的做法。