2016-12-28 387 views
1

正如标题所说,我试图最大化使用以下命令创建一个Internet Explorer窗口:如何使用SHDocVw.InternetExplorer命令最大化由VBA创建的IE窗口?

Set ie = New SHDocVw.InternetExplorer 

相反的:

Set ie = CreateObject("InternetExplorer.Application") 

下面是完整的代码:

Sub wpieautologin() 
Dim ie As SHDocVw.InternetExplorer 

Dim NOME_EMPRESA, CNPJ, CPF, COD_ACESSO As String 
Dim Lookup_Range As Range 

Set ie = New SHDocVw.InternetExplorer 
ie.Visible = False 
ie.Navigate "http://www8.receita.fazenda.gov.br/simplesnacional/controleacesso/autentica.aspx?id=6" 

NOME_EMPRESA = Range("B8").Value 
Set Lookup_Range = Range("B12:E500") 

CNPJ = Application.WorksheetFunction.VLookup(NOME_EMPRESA, Lookup_Range, 2, False) 
CPF = Application.WorksheetFunction.VLookup(NOME_EMPRESA, Lookup_Range, 3, False) 
COD_ACESSO = Application.WorksheetFunction.VLookup(NOME_EMPRESA, Lookup_Range, 4, False) 

Do 
Loop Until ie.readystate = 4 
Call ie.Document.GetElementByID("ctl00_ContentPlaceHolder_txtCNPJ").SetAttribute("value", CNPJ) 
Call ie.Document.GetElementByID("ctl00_ContentPlaceHolder_txtCPFResponsavel").SetAttribute("value", CPF) 
Call ie.Document.GetElementByID("ctl00_ContentPlaceHolder_txtCodigoAcesso").SetAttribute("value", COD_ACESSO) 
ie.Visible = True 

>'What should I write here to maximize my IE Window? 
>'Already tried a few solutions, but they works only when the IE is created by the command 
>'Set ie = CreateObject("InternetExplorer.Application") 

#INSERT COMMAND TO MAXIMIZE WINDOW HERE 

End Sub 

那么,我该如何做到这一点?

回答

3

对于互联网控制,没有固有的Window属性。您需要使用WinAPI。

此代码将工作:

'/ Win API declaration 
Private Declare Function ShowWindow Lib "user32" _ 
     (ByVal hwnd As Long, ByVal nCmdSHow As Long) As Long 
     Const SW_SHOWMAXIMIZED = 3 

Sub wpieautologin() 

Dim ie As SHDocVw.InternetExplorer 

Dim NOME_EMPRESA, CNPJ, CPF, COD_ACESSO As String 
Dim Lookup_Range As Range 

Set ie = New SHDocVw.InternetExplorer 
ie.Visible = False 

ie.Navigate "http://www8.receita.fazenda.gov.br/simplesnacional/controleacesso/autentica.aspx?id=6" 



'// rest of your code.... 


'/ Win API to maximize it. 
'/ Visible prop not required anymore 
ShowWindow ie.hwnd, SW_SHOWMAXIMIZED 
End Sub 

检查其他窗口状态下:http://www.techrepublic.com/blog/10-things/10-plus-of-my-favorite-windows-api-functions-to-use-in-office-applications/

+0

感谢您的答复!当我使用你的代码时,首先它说这个代码必须更新到一个64位版本...所以,而不是'Private Declare Function ShowWindow Lib“user32”_'我必须使用'Private Declare PtrSafe Function ShowWindow Lib“user32” _' ...好的,第一个错误已修复! 因此,修复上述错误后,我得到以下错误:'不兼容的类型',然后调试器标记以下语句:'ShowWindow ie.hwnd'你知道为什么吗? –

+1

在我的结尾没有64位excel,但试试这个链接:http://www.jkp-ads.com/articles/apideclarations.asp。 – cyboashu

+2

@rfw - 将'ByVal hwnd as Long'更改为'ByVal hwnd as LongPtr'。 – Comintern

相关问题