如何用VBA打开网页并输入用户名和密码

作者&投稿:宫哄 (若有异议请与网页底部的电邮联系)
VBA中用shell语句打开网页后怎样输入账号和密码~

可以通过WebBrowser控件的使用实现该功能
以下实例打开百度,在输入框输入“aaa”
Public Sub useie()
'引用Microsoft Internet Controls
Dim IE
On Error Resume Next
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True

IE.Navigate URL:="https://www.baidu.com/"
timeie = DateAdd("s", 20, Now()) '等待20s
Do While IE.Busy And Not IE.ReadyState = READYSTATE_COMPLETE
DoEvents
If timeie < Now() Then
MsgBox “无法连接重新执行”
IE.Quit
Exit Sub
End If
Loop

IE.Document.getElementById("kw").Value = "aaa"
Set IE = Nothing
Set ID = Nothing
End Sub

WebBrowser控件的使用
0、常用方法
Navigate(string urlString):浏览urlString表示的网址
Navigate(System.Uri url):浏览url表示的网址
Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders): 浏览urlString表示的网址,并发送postData中的消息
//(通常我们登录一个网站的时候就会把用户名和密码作为postData发送出去)
GoBack():后退
GoForward():前进
Refresh():刷新
Stop():停止
GoHome():浏览主页
WebBrowser控件的常用属性:
Document:获取当前正在浏览的文档
DocumentTitle:获取当前正在浏览的网页标题
StatusText:获取当前状态栏的文本
Url:获取当前正在浏览的网址的Uri
ReadyState:获取浏览的状态
WebBrowser控件的常用事件:
DocumentTitleChanged,
CanGoBackChanged,
CanGoForwardChanged,
DocumentTitleChanged,
ProgressChanged,
ProgressChanged

1、获取非input控件的值:
webBrowser1.Document.All["控件ID"].InnerText;
或webBrowser1.Document.GetElementById("控件ID").InnerText;
或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

2、获取input控件的值:
webBrowser1.Document.All["控件ID"].GetAttribute("value");;
或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

3、给输入框赋值:
//输入框
user.InnerText = "myname";
password.InnerText = "123456";
webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");

4、下拉、复选、多选:

//下拉框:
secret.SetAttribute("value", "question1");
//复选框
rememberme.SetAttribute("Checked", "True");
//多选框
cookietime.SetAttribute("checked", "checked");

5、根据已知有ID的元素操作没有ID的元素:
HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;

根据Parent,FirstChild,Children[1]数组,多少层级的元素都能找到。

6、获取Div或其他元素的样式:
webBrowser1.Document.GetElementById("addDiv").Style;

7、直接执行页面中的脚本函数,带动态参数或不带参数都行:
Object[] objArray = new Object[1];
objArray[0] = (Object)this.labFlightNumber.Text;
webBrowser1.Document.InvokeScript("ticketbook", objArray);
webBrowser1.Document.InvokeScript("return false");

8、自动点击、自动提交:
HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;
btnAdd.InvokeMember("Click");

9、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助Timer控件延迟执行提交按钮事件:

this.timer1.Enabled = true;
this.timer1.Interval = 1000 * 2;
private void timer1_Tick(object sender, EventArgs e)
{
this.timer1.Enabled = false;
ClickBtn.InvokeMember("Click");//执行按扭操作
}

10、屏蔽脚本错误:
将WebBrowser控件ScriptErrorsSuppressed设置为True即可

11、自动点击弹出提示框:

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
//自动点击弹出确认或弹出提示
IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //弹出确认

相比于win7的旗舰版、初级版、家庭普通版、家庭高级版、专业版、企业版6个版本和win8的核心版、专业版、企业版、RT这4个版本;win9可能会有标准版和专业版,另外据微软高管透露,从windows9开始将不会再有Windows Phone 、Windows RT和Windows3种版本,意味着可能会进行整合!

1、首先打开电脑上的excel表格,然后按alt+f11打开VBA界面。

2、接着选择工具按钮,选择引用,弹出对话框选择Internet   controls选项。

3、然后在模块界面输入想要访问的网址代码。

4、然后单击运行按钮。

5、运行后就可以看到网页打开,最后保存文件就完成了。



可以通过WebBrowser控件的使用实现该功能
以下实例打开百度,在输入框输入“aaa”
Public Sub useie()
'引用Microsoft Internet Controls
Dim IE
On Error Resume Next
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True

IE.Navigate URL:="https://www.baidu.com/"
timeie = DateAdd("s", 20, Now()) '等待20s
Do While IE.Busy And Not IE.ReadyState = READYSTATE_COMPLETE
DoEvents
If timeie < Now() Then
MsgBox “无法连接重新执行”
IE.Quit
Exit Sub
End If
Loop

IE.Document.getElementById("kw").Value = "aaa"
Set IE = Nothing
Set ID = Nothing
End Sub

WebBrowser控件的使用
0、常用方法
Navigate(string urlString):浏览urlString表示的网址
Navigate(System.Uri url):浏览url表示的网址
Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders): 浏览urlString表示的网址,并发送postData中的消息
//(通常我们登录一个网站的时候就会把用户名和密码作为postData发送出去)
GoBack():后退
GoForward():前进
Refresh():刷新
Stop():停止
GoHome():浏览主页
WebBrowser控件的常用属性:
Document:获取当前正在浏览的文档
DocumentTitle:获取当前正在浏览的网页标题
StatusText:获取当前状态栏的文本
Url:获取当前正在浏览的网址的Uri
ReadyState:获取浏览的状态
WebBrowser控件的常用事件:
DocumentTitleChanged,
CanGoBackChanged,
CanGoForwardChanged,
DocumentTitleChanged,
ProgressChanged,
ProgressChanged

1、获取非input控件的值:
webBrowser1.Document.All["控件ID"].InnerText;
或webBrowser1.Document.GetElementById("控件ID").InnerText;
或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

2、获取input控件的值:
webBrowser1.Document.All["控件ID"].GetAttribute("value");;
或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

3、给输入框赋值:
//输入框
user.InnerText = "myname";
password.InnerText = "123456";
webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");

4、下拉、复选、多选:

//下拉框:
secret.SetAttribute("value", "question1");
//复选框
rememberme.SetAttribute("Checked", "True");
//多选框
cookietime.SetAttribute("checked", "checked");

5、根据已知有ID的元素操作没有ID的元素:
HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;

根据Parent,FirstChild,Children[1]数组,多少层级的元素都能找到。

6、获取Div或其他元素的样式:
webBrowser1.Document.GetElementById("addDiv").Style;

7、直接执行页面中的脚本函数,带动态参数或不带参数都行:
Object[] objArray = new Object[1];
objArray[0] = (Object)this.labFlightNumber.Text;
webBrowser1.Document.InvokeScript("ticketbook", objArray);
webBrowser1.Document.InvokeScript("return false");

8、自动点击、自动提交:
HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;
btnAdd.InvokeMember("Click");

9、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助Timer控件延迟执行提交按钮事件:

this.timer1.Enabled = true;
this.timer1.Interval = 1000 * 2;
private void timer1_Tick(object sender, EventArgs e)
{
this.timer1.Enabled = false;
ClickBtn.InvokeMember("Click");//执行按扭操作
}

10、屏蔽脚本错误:
将WebBrowser控件ScriptErrorsSuppressed设置为True即可

11、自动点击弹出提示框:

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
//自动点击弹出确认或弹出提示
IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //弹出确认
vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");//弹出提示
}

WebBrowser页面加载完毕之后,在页面中进行一些自动化操作的时候弹出框的自动点击(屏蔽)

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
//自动点击弹出确认或弹出提示
IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;
vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //弹出确认
vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");//弹出提示
//下面是你的执行操作代码
}

12、获取网页中的Iframe,并设置Iframe的src
HtmlDocument docFrame = webBrowser1.Document.Window.Frames["mainFrame"].Document;

HtmlDocument docFrame = webBrowser1.Document.All.Frames["mainFrame"].Document;
docFrame.All["mainFrame"].SetAttribute("src", "http://www.baidu.com/");

13、网页中存在Iframe的时候webBrowser1.Url和webBrowser1_DocumentCompleted中的e.Url不一样,前者是主框架的Url,后者是当前活动框口的Url。

14、让控件聚焦
this.webBrowser1.Select();
this.webBrowser1.Focus();
doc.All["TPL_password_1"].Focus();

15、打开本地网页文件
webBrowser1.Navigate(Application.StartupPath + @"\Test.html");

16、获取元素、表单

//根据Name获取元素
public HtmlElement GetElement_Name(WebBrowser wb,string Name)
{
HtmlElement e = wb.Document.All[Name];
return e;
}

//根据Id获取元素
public HtmlElement GetElement_Id(WebBrowser wb, string id)
{
HtmlElement e = wb.Document.GetElementById(id);
return e;
}

//根据Index获取元素
public HtmlElement GetElement_Index(WebBrowser wb,int index)
{
HtmlElement e = wb.Document.All[index];
return e;
}

//获取form表单名name,返回表单
public HtmlElement GetElement_Form(WebBrowser wb,string form_name)
{
HtmlElement e = wb.Document.Forms[form_name];
return e;
}

//设置元素value属性的值
public void Write_value(HtmlElement e,string value)
{
e.SetAttribute("value", value);
}

//执行元素的方法,如:click,submit(需Form表单名)等
public void Btn_click(HtmlElement e,string s)
{

e.InvokeMember(s);
}

Sub 输入()
    Set ie = CreateObject("InternetExplorer.Application")
    With ie
        .Navigate "这里换成你的网址"  'Navigate方法可以打开指定的网页
        .Visible = True '打开后要显示网页
        .Document.All("这里换成你的用户名框id或名称").Value = "用户名"  
        .Document.All("这里换成你的密码框id或名称").Value = "用户名"  
        'Document.All("元素名称或ID") 可以引用某个元素,需要在网页源代码中查找。 
    End With
    Set ie = Nothing
End Sub


如果你的默认浏览器是IE浏览器我就能解决问题。


VBA开发需要什么软件环境?
(1)VBA是一种解释性语言。(2)VBA是一种面向对象的语言。(3)VBA支持可视化的编程环境。(4)VBA不能单独被执行,只能被office程序(Word、Excel、Access和PowerPoint等)所调用。(5)VBA是事件驱动的。所以,VBA开发需要以下软件环境:(1)电脑上需安装Microsoft office程序。(2)电脑上需安装一...

excel VBA用何种代码实现调用word中的内容?具体是如何打开word文档以 ...
只要定义一个Word.Application对象,Set WordApp = CreateObject("Word.Application")然后操作这个WordApp 对象就可以了,就像在Word中使用VBA一样,打开文件用 WordApp.Documents.Open 文件路径 定位主要用 WordApp.Selection.Move系列指令,也可以用WordApp.Selection.Goto 具体的你可以用录制宏的方法在W...

办公自动化中VBA宏语言是怎么一回事啊
打开“Visual Basic 编辑器”。假设您要编写一个宏。先从最重要的事情开始:您需要打开“Visual Basic 编辑器”。方法是:在“工具”菜单上,指向“宏”,然后单击“Visual Basic 编辑器”。为什么要从这件事开始?因为“Visual Basic 编辑器”是一个用于编写和编辑 VBA 的工具。它的名字在一定程度上...

VBA代码如何表示任意工作表
在VBA里有一个Application.Inputbox()的方法,基本上可以实现你提到的两个要求。Set rng=Application.Inputbox()这样返回的是一个你选择的单元格区域,至于你要提取选择的单元格区域还是其所在的工作表名称,都可以通过代码来完成的。Application.Inputbox()方法的详细用法,请参考系统帮助。给你个函数用:...

vba查询代码
那可以用模糊查询:If Instr(Sheet1.Cells(M, 2).Value,"搜寻值")>0 Then 2、 Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容,有可能查询到的第“M”行,并不是“最左最上角的单元格”,所以(M,1)其实是没有值的。怎么解决呢?这个没有任何影响,也不会报错,例如第M行和第M...

VBA 中open for output和open for binary用法有何区别
这两个都是文本打开的模式。Output是直接输出到指定的文本中 binary是以二进制的形式输出 mode是必需的,指定文件方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,则以Random访问方式打开文件。

如何运用VBA将指定路径下的某一文件复制到另一指定路径下
直接在Excel中,无需复杂操作,就能轻松实现指定文件的移动。以下是具体步骤:首先,打开你的工作表,找到并点击菜单栏中的“开发工具”,然后选择“VisualBasic”选项,这将打开VBA编辑器。接着,进入VBA工程窗口,你会看到窗口左侧有一个名为“ThisWorkbook”的选项。点击它,选择“插入”,再选择“模块”...

VBA EXCEL 多表查询功能
如果是在固定在SHEET1工作表A1单元格输入查询内容的,那就用工作表Change事件。方法:右键单击SHEET1工作表标签,在右键菜单中选择“查看代码”,在出现的工作表代码存放的编辑窗口中复制粘贴以下代码:Private Sub Worksheet_Change(ByVal Target As Range)If Target.Address <> "$A$1" Then Exit Sub ...

EXCEL里面的“宏”怎么用?
1、通常首先添加“宏”选项。具体路径是单击左上角的Microsoft图标,然后选择:“Excel选项” - “常用”,选中“功能区显示开发工具”选项卡,然后您可以看到“开发”有一个选项“工具”在Excel选项卡中。2、在Excel选项卡上选择“开发工具”,开始录制宏,选择B3单元格的文本[百度网页],然后单击选择“...

什么是“宏”
但是,有极少数的人可能会利用“VBA”语言编制专门破坏电脑系统的病毒程序,并集成到Excel中,给电脑使用者带来损失。为了防止这种情况的发生,Excel自带了“宏”检测功能。当发现正在打开的Excel文件带有“宏”时,会提示用户注意,并让用户自行选择是否启用“宏”。电脑提示语言如下:“ x x 文件中包含宏...

冷水江市13173842971: 用VBA打开网址链接怎么做 -
汪欧益坦: word2010操作步骤如下: 1、新建word文档,点击插入选项卡,超链接按钮;2、地址后直接输入网址即可,例如baidu.com,点击确定;3、效果如下图,按下ctrl,点击即可打开.

冷水江市13173842971: 用VBA如何实现用户登录,输入用户名和正确的密码才可以打开,请问程序该如何去写啊,跪求大家的帮助 -
汪欧益坦: 1.VBA工程插入“模块”,添加 auto_open过程; 2.过程中加入代码,隐藏工作表. 3.弹出密码验证userform. 4.验证密码的准确性,执行打开或关闭.具体代码如下: Userform代码 Private Sub CommandButton1_Click() '验证密码是不死...

冷水江市13173842971: 已知用户名和密码,怎样用VBA后台登录网站 怎样用vba从后台下载网站上各未读订单名称的附件 -
汪欧益坦: 1、首先要登录ie网站后台.如下代码:Dim ie As New InternetExplorer '创建一个IE对象 With ie .Navigate "网址" 'Navigate方法可以打开指定的网页 .Visible = True '打开后要显示网页 Do Until ie.ReadyState = READYSTATE_COMPLETE ...

冷水江市13173842971: Excel 请问如何用VBA打开网页 -
汪欧益坦: Excel 请问如何用VBA打开网页,给段代码,并解释:代码如下:Public Sub GoToOkexcel() '打开网页 Dim myIE As InternetExplorer Set myIE = New InternetExplorer With myIE .Visible = True .Navigate "http://www....

冷水江市13173842971: 如何利用VBA打开网页 -
汪欧益坦: StartURL = "网址" set IE = CreateObject("InternetExplorer.Application") IE.Visible = true IE.Navigate StartURL

冷水江市13173842971: 如何利用VBA打开网页 -
汪欧益坦: 已解决.放在这里给尚不能解决的朋友看下吧(或许多余).代码如下:Public Sub GoToOkexcel()'打开网页Dim myIE As InternetExplorerSet myIE = New InternetExplorerWith myIE.Visible = True.Navigate "IPEnd WithSet myIE = NothingEnd Sub运行时可能会出现“数据未定义”错误.解决办法:在VBA编辑器窗口依次点击工具==引用勾选Microsoft Internet Controls确定,再运行,OK!

冷水江市13173842971: VBA调用浏览器打开指定网页的几种方法 -
汪欧益坦: 我试了一下,可以用任务计划来实现定时打开网页,单击“开始”,“程序”,“附件”,“系统工具”,“任务计划”,然后点击添加任务计划,相信后面的就不用我多介绍了,但是需要提示的一点的是你可能需要下载第三方浏览器,因为我在程序中找不到IE浏览器,然后把你需要打开的网页设成主页就可以了! 虽然可用,但有些麻烦,仅供参考!

冷水江市13173842971: 在Excel中填入数据,用VBA进入指定网站进行查询? -
汪欧益坦: VBA打开网站进行查询要受许多条件进行限制,例如网站需要登录,特别是登录要进行图形验证码填写的,编程会非常困难,甚至几乎无法实现.VBA与浏览器交互有两种方式,一是黑客方式,使用CreateObeject("InternetExplorer.Application"...

冷水江市13173842971: VBA 怎样打开一个有用户名和密码的网络共享文件 -
汪欧益坦: Sub 在有密码的工作表执行代码() Sheets("1").Unprotect Password:=123 '假定表名为“1”,密码为“123” 打开工作表 Range("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '隐藏C列空值行 Sheets("1").Protect ...

冷水江市13173842971: VBA 怎样打开一个有用户名和密码的网络共享文件 -
汪欧益坦: VBS代码如下:Sub 在有密码的工作表执行代码()Sheets("1").Unprotect Password:=123 '假定表名为“1”,密码为“123” 打开工作表Range("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True '隐藏C列空值行Sheets("1").Protect Password:=123 '重新用密码保护工作表End Sub或Sub 解除全部工作表保护()Dim n As Integer For n = 1 To Sheets.Count Sheets(n).Unprotect Next nEnd Sub

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网