2013-03-06 2 views
3

Я пытаюсь запустить следующий код, но я продолжаю получать Else без If Error в первом sub. Код должен проходить через столбец, открывать веб-страницы, если в ячейке есть URL-адрес, а затем сохранить информацию о странице в виде текстового файла. Если URL-адрес отсутствует, он просто сохраняет текст в этом файле в виде текстового файла. Я не могу понять, как изменить синтаксис, чтобы заставить его работать.VBA: Else without If Error

Sub LoopOverB() 

Dim myRow As Long 

myRow = 10 

While Worksheets("Input_Format_A").Cells(myRow, 2).value <> "" 
    If InStr(1, Worksheets("Input_Format_A").Cells(myRow, 2).value, "http://", vbTextCompare) Then Call url_Test(Worksheets("Input_Format_A").Cells(myRow, 2).value, "C:\mallet\test\" & Worksheets("Input_Format_A").Cells(myRow, 1).value & ".txt") 
     myRow = myRow + 1 
    Else 
     Open "C:\mallet\test\" & Worksheets("Input_Format_A").Cells(myRow, 1) & ".txt" For Append As #1 
     Print #1, Worksheets("Input_Format_A").Cells(myRow, 2).value 
     Close #1 

     myRow = myRow + 1 
    End If 
Wend 
End Sub 


Sub url_Test(URL As String, Filename As String) 

Dim FSO As Object 
Dim ieApp As Object 
Dim Txt As String 
Dim TxtFile As Object 

Set FSO = CreateObject("Scripting.FileSystemObject") 
Set TxtFile = FSO.OpenTextFile(Filename, 2, True, -1) 

Set ieApp = CreateObject("InternetExplorer.Application") 
ieApp.Visible = True 
ieApp.Navigate URL 

While ieApp.Busy Or ieApp.ReadyState <> 4 
    DoEvents 
Wend 

Txt = ieApp.Document.body.innerText 
TxtFile.Write Txt 
TxtFile.Close 

ieApp.Quit 

Set ieApp = Nothing 
Set FSO = Nothing 
End Sub 
+0

Можете ли вы исправить возврат каретки в своем коде? Трудно сказать, являются ли недостающие каретки проблемой или это вызвано тем, как вы вставили код. – Keith

+2

Могу ли я заявить, что вы устанавливаете и используете Smart Indent (http://www.oaltd.co.uk/Indenter/) или пытаетесь создать правильный отступ вместо этого беспорядка? –

ответ

14

На линии с первым If, вы должны перейти на новую строку после Then, в противном случае ваш If будет неявным закрыт.

'Good (in this case) 
If <condition> Then  
    DoSomething 
    myRow = myRow + 1 
Else 
    DoSomething Different 
End if 


'NOT good 
If <condition> Then DoSomething 
    'the if is now "closed" !!! 
    myRow = myRow + 1 
Else 
    DoSomething Different 
End if 
+0

Спасибо за помощь! – Momo

+2

умный индентор сразу же выделил вопрос, потому что 'Else' не совпал с' If' – SeanC

+0

+1 мне нужно было сделать домашнее задание братьев на * QBASIC * и взломало голову, почему она не работает. Смешно, что это работает, хотя –