2014-10-01 2 views
0

Excel에서 IE 기반 VBA 스크립트를 사용하여 작성했습니다. VBA 스크립트는 IE를 열고, 웹 사이트로 이동하고, 사이트에 로그인하고, 검색 기준을 입력하고, 새 창을 엽니 다. VBA 스크립트가 원래 인스턴스에 집중할 수 있도록 GetIE 함수를 사용하여 새로운 Windows 웹 사이트를 다시 IE의 원래 인스턴스로 미러링했습니다. 그런 다음 해당 창의 링크를 클릭 한 다음 가격 정보를 강조 표시합니다. 하지만 그게 내가 붙어있는 곳이야. 나는 내가 강조한 것을 단순히 클립 보드에 복사 할 코드가 절실히 필요하다. 여기에 게시 된 코드는 다음과 같습니다Internet Explorer에서 선택한 정보 복사

Sub ExtractPMDPricing() 

Dim core As ICore 
Set core = New OpenTwebstLib.core 
Dim IE As InternetExlorer 
Set IE = CreateObject("Internet Explorer") 
Dim browser As IBrowser 


Set browser = core.StartBrowser("xxxxxxxxxxxxxxxx") 

Range("A1").Select 
Selection.Copy 

Call browser.FindElement("div", "id=footer-position-placeholder").Click 
Call browser.FindElement("a", "uiname=log in, index=1").Click 
Call browser.FindElement("input text", "id=erznr").InputText(ActiveCell.Value) 
Call browser.FindElement("td", "index=2").Click 
Call browser.FindElement("input button", "id=sub").Click 
Application.Wait (Now + #12:00:06 AM#) 

Call GetIE 

Call browser.FindElement("span", "id=selectionctrl_MATCONTSMALLCTRL_navigatorctrl_treeselectionctrl_MATCONTSMALLCTRL_navigatorctrl_Prices-cnt-start").Click 
Call browser.FindElement("input text", "id=selectionctrl_MATCONTSMALLCTRL_subcatviewerctrl_selectionctrl_mod_ergebnis_ga[1].kbetr").RightClick 
txt = IE.document.parentWindow.clipboardData.GetData("TEXT") 
Range("B2").Select 
ActiveCell.PasteSpecial 
End Sub 

' ZVI:2011-05-30 VBA Macro For Already Open IE Window 
' Reference required: Tools - References - Microsoft Internet Controls 
Function GetIE() 

Dim shellWins As ShellWindows 
Dim IE As InternetExplorer 

Set shellWins = New ShellWindows 

If shellWins.Count > 0 Then 
' Get IE 
Set IE = shellWins.Item(0) 
Else 
' Create IE 
Set IE = New InternetExplorer 
IE.Visible = False 
End If 

IE.Navigate "xxxxxxxxxxxxxxxx" 

Set IE = Nothing 
Set shellWins = Nothing 

End Function 

내가 범위 위의 하위 ("B2")의 종료 직전 마지막 통화 browser.findelement 선 아래에 맞아야 필요가 복사 코드입니다.

답변

0
txt=ie.document.parentwindow.clipboardData.GetData("TEXT") 

이 클립 보드가됩니다. Setdata를 사용하십시오.

또한 브라우저 명령을 내릴 수 있습니다.

OLE 개체에 명령을 실행하고 IOleCommandTarget 인터페이스를 사용하여 명령 실행 상태를 반환합니다. (즉, 기본 ie.execwb 5, 0)에

구문

object.ExecWB(_ 
    cmdID As OLECMDID, _ 
    cmdexecopt As OLECMDEXECOPT, _ 
    [pvaIn As Variant,] _ 
    [pvaOut As Variant]) 

파라미터

실행할 명령의 식별자를 나타내는 장기 cmdID . 명령 식별자에 대한 자세한 내용은 MSHTML 명령 식별자를 참조하십시오. 명령 옵션을 지정

cmdexecopt

OLECMDEXECOPT 값.

pvaIn 선택 사항. 명령 입력 인수를 지정하는 데 사용되는 변형입니다.

pvaOut 선택 사항. 명령 출력 인수를 지정하는 데 사용되는 변형입니다.

IDM_COPY Command ID 

-------------------------------------------------------------------------------- 

Copies the current selection to the clipboard. 

C++ Information 

Command group CGID_MSHTML (defined in mshtmhst.h) 
Symbolic constant IDM_COPY 
User interface None. Set nCmdExecOpt to OLECMDEXECOPT_DONTPROMPTUSER. 
IOleCommandTarget::Exec parameters pvaIn Set to NULL. 
pvaOut Set to NULL. 

Header file mshtmcid.h 
Applies to IHTMLDocument2::execCommand, IHTMLDocument2::queryCommandEnabled, IHTMLDocument2::queryCommandIndeterm, IHTMLDocument2::queryCommandState, IHTMLDocument2::queryCommandSupported, IHTMLDocument2::queryCommandValue, IOleCommandTarget::Exec, IOleCommandTarget::QueryStatus. 

Minimum Availability 

Internet Explorer 4.0 and later. 
+0

PS 프로그래머는 클립 보드를 사용할 수 없으며 사용자 만 사용할 수 있습니다. 직접 다른 프로그램에 넣어야합니다. – Noodles

+0

답장을 보내 주셔서 감사합니다 @ 국수! 나는 웹 기반이 아닌 매크로에서 훨씬 더 많은 경험을 쌓아왔다. 그래서 이것은 정말로 나를위한 두려움이었다. 필자는 보통 웹 사이트에서 순수한 참조를 벗어나기 위해 필요한 모든 코드 추가를 기반으로 사용할 수있는 스크립트 레코더를 가지고 있습니다. 지금은 거의 작동 중입니다 ... 나는 그것을 느낄 수 있습니다. 그러나 지금 매크로를 실행할 때, 당신이 제공 한 코드의 최상위 라인을 참조하고 고전 ** 런타임 오류 424 - 객체에 오류 코드 **가 필요합니다. 나는 꽤 재미있는 브라우저 명령으로 놀고있다. 더 많은 도움을 주시면 감사하겠습니다. –

+0

ie = createObject ("Internet Explorer")를 설정하십시오. – Noodles

관련 문제