我有一个宏,可以从网站中提取数据。我从用户表单中获取输入。它没有出现错误,但是IE不会关闭并且占用了所有内存。是否需要其他东西而不是
这是子程序。正如您所看到的,在最后我关闭了IE。
IE.Quit
?这是子程序。正如您所看到的,在最后我关闭了IE。
Public Cancel As Boolean
Sub USGD()
Dim IE As Object
Dim iWsh As Worksheet
Dim link As String
Dim sDate As String
Dim eDate As String
Dim StationID As String
Cancel = False
With USGS
.StartUpPosition = 0
.Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width)
.Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)
.Show
End With
If Cancel = True Then
Unload USGS
Exit Sub
End If
With ActiveWorkbook
Set iWsh = .Sheets.Add(After:=.Sheets(.Sheets.Count))
End With
iWsh.Activate
iWsh.Range("A1").Select 'I know this is not efficient but works fine
StationID = USGS.TextBox1.Text
'StationID = InputBox("Please enter the station ID")
'sDate = InputBox("Please enter START date in this format: 'yyyy-mm-dd'")
'eDate = InputBox("Please enter END date in this format: 'yyyy-mm-dd'")
sDate = Format(USGS.TextBox2.Text, "yyyy-mm-dd")
eDate = Format(USGS.TextBox3.Text, "yyyy-mm-dd")
link = "https://waterdata.usgs.gov/ & _
StationID & sDate & eDate
Unload USGS
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = False
.Navigate link 'URL
Do Until .ReadyState = 4: DoEvents: Loop
.ExecWB 17, 0 '// SelectAll
.ExecWB 12, 2 '// Copy selection
End With
iWsh.PasteSpecial Format:="Text", link:=False, DisplayAsIcon:=False
Range("A1").Select
IE.Quit
Set IE = Nothing
Set iWsh = Nothing
End Sub
这是用户表单:在使用输入框时,我没有遇到这个问题,所以我猜测与用户表单有关。只有当用户关闭用户表单时才会发生这种情况。
Private Sub ToggleButton1_Click()
Me.Hide
Cancel = True
End Sub
Private Sub OK_Click()
Me.Hide
End Sub
注意: 如果用户取消,它甚至不会打开IE并在此子程序之后退出。
但是如果用户关闭表单,则会打开IE,并且不会将Cancel
设置为True,这是退出该子程序的条件。
更新: Expert-Exchange涵盖了这个问题,但从未提出实际解决方案。
更新2: 关闭所有IE实例不是一个选项。
这是用户窗体现在的设置方式: