Vba 通过宏中的查询登录到Yahoo。饼干传递?

Vba 通过宏中的查询登录到Yahoo。饼干传递?,vba,excel-web-query,Vba,Excel Web Query,我有一个表,我需要从雅虎导入,我想作为一个宏运行。宏记录器做得很好,但是当我设置查询(录制时)时,我必须首先登录,然后选择表 只要我不关闭excel,查询就可以在宏中工作。当我重新进入excel时,cookie似乎丢失了,除非我通过查询界面登录到yahoo,否则cookie无法工作。我曾尝试打开一个新的IE窗口并通过该窗口登录,但cookie似乎没有传递到查询 有人知道我如何解决这个问题吗?我可以把我的登录凭证放在一些输入框中,或者从用户填写的ie窗口传递这个cookie 以下是当我尝试导入ya

我有一个表,我需要从雅虎导入,我想作为一个宏运行。宏记录器做得很好,但是当我设置查询(录制时)时,我必须首先登录,然后选择表

只要我不关闭excel,查询就可以在宏中工作。当我重新进入excel时,cookie似乎丢失了,除非我通过查询界面登录到yahoo,否则cookie无法工作。我曾尝试打开一个新的IE窗口并通过该窗口登录,但cookie似乎没有传递到查询

有人知道我如何解决这个问题吗?我可以把我的登录凭证放在一些输入框中,或者从用户填写的ie窗口传递这个cookie

以下是当我尝试导入yahoo登录页面时(通过web连接窗口登录后),宏记录器返回的结果

编辑:我正试图用另一种方式来处理这个问题。因此,我已通过以下方法登录到yahoo:

Sub gotosite()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "http://login.yahoo.com"
'IE.Visible = True
'apiShowWindow IE.hwnd, SW_MAXIMIZE
Do While IE.Busy: DoEvents: Loop
Do While IE.ReadyState <> 4: DoEvents: Loop
IE.Document.all("login").Value = "username"
IE.Document.all("passwd").Value = "password"
IE.Document.all(".save").Click
Do While IE.Busy: DoEvents: Loop
Do While IE.ReadyState <> 4: DoEvents: Loop

IE.Navigate "http://football.fantasysports.yahoo.com/archive/nfl/2013/715896/draftresults"
'IE.Visible = True
'apiShowWindow IE.hwnd, SW_MAXIMIZE
Do While IE.Busy: DoEvents: Loop
Do While IE.ReadyState <> 4: DoEvents: Loop
Sub gotosite()
模糊的物体
设置IE=CreateObject(“InternetExplorer.Application”)
即“导航”http://login.yahoo.com"
'IE.Visible=True
“apiShowWindow IE.hwnd,SW_”
在忙的时候做
Do While IE.ReadyState 4:DoEvents:Loop
IE.Document.all(“登录”).Value=“用户名”
例如,Document.all(“passwd”).Value=“password”
IE.Document.all(“.save”)。单击
在忙的时候做
Do While IE.ReadyState 4:DoEvents:Loop
即“导航”http://football.fantasysports.yahoo.com/archive/nfl/2013/715896/draftresults"
'IE.Visible=True
“apiShowWindow IE.hwnd,SW_”
在忙的时候做
Do While IE.ReadyState 4:DoEvents:Loop
这将使网页的网站,我试图刮。感兴趣的源代码如下所示:

<div id="drafttables" class="round">
<div class="yui-gb">
<div class="yui-u first">
<table cellpadding="0" cellspacing="0" border="0" class="simpletable">
<thead>
 <tr>
   <th colspan="3">Round 1</th>
 </tr>
</thead>
<tbody>
<tr class="odd"> <td class="first">1.</td>
 <td class="player" nowrap><a href="http://sports.yahoo.com/nfl/players/8261" target="sports" class="name">Adrian Peterson</a>  <span>(Min - RB)</span></td>
 <td class="last" title="Tale of the Gerbil">Tale of the ...</td>
</tr>
<tr class="even"> <td class="first">2.</td>
 <td class="player" nowrap><a href="http://sports.yahoo.com/nfl/players/25741" target="sports" class="name">Doug Martin</a>  <span>(TB - RB)</span></td>
 <td class="last" title="Michael Korte's Team">Michael Kort...</td>
</tr>
<tr class="odd"> <td class="first">3.</td>

第一轮
1.
(分钟-RB)
关于。。。
2.
(TB-RB)
迈克尔·科特。。。
3.
是否有人知道如何循环使用此代码、返回所有class=“name”>值以及第一次尝试时的下一次“(使用QueryTables,这是从web上刮取数据的一种非常不可靠的方法)您是否尝试过简单地告诉它记住密码?现在,您有:

.SavePassword = False
尝试:

关于你的第二个问题:

是否有人知道如何循环此代码,返回所有class=“name”>值和下一个值

类似于此(需要IE8+使用
getElementsByCassName
方法)

Dim ele as Object

For each ele in IE.Document.GetElementsByClassName("name")

    Debug.Print ele.Value ' or ele.InnerText, etc...

Next
.SavePassword = True
Dim ele as Object

For each ele in IE.Document.GetElementsByClassName("name")

    Debug.Print ele.Value ' or ele.InnerText, etc...

Next