| 订阅 | 在线投稿
分享
 
 
 

使用Excel VBA来访问WEB页面

来源:互联网网民  宽屏版  评论
2006-12-16 17:27:49

以前有过一个VB用户他想知道如何能在一个Excel电子数据表中自动打开一个URL链接以及怎样才能在其中复制信息。他注意到在他的应用程序有一些特征可以使这个问题简单化,“当我在Excel中打开URL链接的时候,我所需要提取的信息通常都位于相同的单元格中。例如,Sheet3中的单元格G13将会总是显示客户的名字”。同时他也注意到他的应用程序可能引用了数以千计的WEB页面,所以,性能也是一个值得关注的问题。

王朝网络

注意:上面实例中的图片是以Excel 2003中的VBA开发的。在VB 6中实现,使用VB的三层架构而不是VB.NET。测试工作已经完成以确保程序代码能够兼容于Excel 2003中的VBA,但是仍然可能有一些兼容性的BUG存在。

准备开始实现这个项目的一个方法就是在Excel中记录几个宏(Macro)并且查看Excel生成的这些代码是如何来解决这些问题的。所以,为了这样做,我首先创建一个Excel电子数据表格并且其中包含有一些测试用的实例数据,而且需要手工完成选择这些实例数据的操作。以下这段代码就是被Excel所记录下来的:

Sub Macro1()

Range("A2").Select

Selection.Hyperlinks(1).Follow _

NewWindow:=False, AddHistory:=True

Sheets("ResultsReports").Select

Range("A2").Select

ActiveSheet.Paste

End Sub

这看起来很好,除了我们在这段代码里面还没有加入从Web页面选择文本的操作之外。当然,这个操作不会被记录,这是因为Excel它只能记录数据表的操作。所以,通常我们没有办法直接从Web页面上查找我们所需要的数据。但就象我们在文章以后部分将要看到的那样,这事实上是可以的。为了完成这件事,你可以将Internet Explorer浏览器载入成为一个对象,然后查找在Web页面上你所需要的任何文本。在开始阅读后面部分的文章之前,我们假设你还不知道有关使用这个方法的一些事情。我们需要一个更好的方法来完成这个任务。

如果你将Web页面打开为一个数据表的形式,Excel它将会自动的将Web页面导入到你的本地工作簿中,然后你就可以查找其中的内容,并且甚至可以记录在其中的操作。让我们来尝试做一下。这里有一个窍门就是在你尝试打开Web页面之前,你要记住将URL复制到剪贴板中的名字。Excel它没有一个直接的方法可以将Web页面打开成为一个文件。所以你必须首先将Web页面的URL地址复制到剪贴板中,然后将其粘贴到Excel的打开对话框中。

第二个窍门是你要意识到Excel它会自动的将我们所查找的Web页面中的文章名字复制到数据表格中的单元格中。Excel它会通过复制在HTML文档中表格的格式来完成这件事。所以我们需要分离这些单元格并且通过重新选择真正位于这些单元格中的数据来复制我们想要的数据。

一旦我们注意到以上这些窍门后,我们就可以得到以下所列出的这些结果:

Sub Macro1()

Range("A2").Select

Selection.Copy

Application.CutCopyMode = False

Workbooks.Open Filename:= _

"http://visualbasic.about.com/library/bldykblkscpa.htm"

Range("B10:C10").Select

With Selection

.HorizontalAlignment = xlGeneral

.VerticalAlignment = xlBottom

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 1

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With

Selection.UnMerge

Range("B10").Select

Selection.Copy

ActiveWorkbook.Close

Sheets("ResultsReports").Select

Range("A2").Select

ActiveSheet.Paste

End Sub

这样看起来更好了。我们就可以使用这个来完成工作。现在我们就可以在其中加入某些所需要的循环逻辑来完成这个程序了。最后我们所看到的结果已经展示在文章最前面的图片中了。下面就是生成这些结果的一些代码:

Sub CopyWebData()

'

' CopyWebData Macro

'

Dim InCellLoc As String

Dim InCellCol As String

Dim InCellRow As String

Dim NameValue As String

Dim AddressValue As String

Dim OutCellLoc As String

Dim OutCellCol As String

Dim OutCellRow As String

InCellCol = "B"

InCellRow = "2"

OutCellRow = "1"

InCellLoc = InCellCol & InCellRow

Sheets("WebAddresses").Select

Do While Range(InCellLoc).Value <> ""

Sheets("WebAddresses").Select

Workbooks.Open Range(InCellLoc).Value

Range("B10:C10").Select

Selection.UnMerge

ArticleNameValue = Range("B10").Value

ActiveWorkbook.Close (False)

Windows("Start.xls").Activate

Sheets("ResultsReports").Select

OutCellRow = CStr(CInt(OutCellRow) + 1)

OutCellCol = "A"

OutCellLoc = OutCellCol & OutCellRow

Range(OutCellLoc).Value = ArticleNameValue

Sheets("WebAddresses").Select

InCellRow = CStr(CInt(InCellRow) + 1)

InCellLoc = InCellCol & InCellRow

Loop

End Sub

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
以前有过一个VB用户他想知道如何能在一个Excel电子数据表中自动打开一个URL链接以及怎样才能在其中复制信息。他注意到在他的应用程序有一些特征可以使这个问题简单化,“当我在Excel中打开URL链接的时候,我所需要提取的信息通常都位于相同的单元格中。例如,Sheet3中的单元格G13将会总是显示客户的名字”。同时他也注意到他的应用程序可能引用了数以千计的WEB页面,所以,性能也是一个值得关注的问题。 [url=http://www.wangchao.net.cn/bbsdetail_571215.html][img]http://images.wangchao.net.cn/images/upload/images/1166261269906.jpg[/img][/url] 注意:上面实例中的图片是以Excel 2003中的VBA开发的。在VB 6中实现,使用VB的三层架构而不是VB.NET。测试工作已经完成以确保程序代码能够兼容于Excel 2003中的VBA,但是仍然可能有一些兼容性的BUG存在。 准备开始实现这个项目的一个方法就是在Excel中记录几个宏(Macro)并且查看Excel生成的这些代码是如何来解决这些问题的。所以,为了这样做,我首先创建一个Excel电子数据表格并且其中包含有一些测试用的实例数据,而且需要手工完成选择这些实例数据的操作。以下这段代码就是被Excel所记录下来的: Sub Macro1() Range("A2").Select Selection.Hyperlinks(1).Follow _ NewWindow:=False, AddHistory:=True Sheets("ResultsReports").Select Range("A2").Select ActiveSheet.Paste End Sub 这看起来很好,除了我们在这段代码里面还没有加入从Web页面选择文本的操作之外。当然,这个操作不会被记录,这是因为Excel它只能记录数据表的操作。所以,通常我们没有办法直接从Web页面上查找我们所需要的数据。但就象我们在文章以后部分将要看到的那样,这事实上是可以的。为了完成这件事,你可以将Internet Explorer浏览器载入成为一个对象,然后查找在Web页面上你所需要的任何文本。在开始阅读后面部分的文章之前,我们假设你还不知道有关使用这个方法的一些事情。我们需要一个更好的方法来完成这个任务。 如果你将Web页面打开为一个数据表的形式,Excel它将会自动的将Web页面导入到你的本地工作簿中,然后你就可以查找其中的内容,并且甚至可以记录在其中的操作。让我们来尝试做一下。这里有一个窍门就是在你尝试打开Web页面之前,你要记住将URL复制到剪贴板中的名字。Excel它没有一个直接的方法可以将Web页面打开成为一个文件。所以你必须首先将Web页面的URL地址复制到剪贴板中,然后将其粘贴到Excel的打开对话框中。 第二个窍门是你要意识到Excel它会自动的将我们所查找的Web页面中的文章名字复制到数据表格中的单元格中。Excel它会通过复制在HTML文档中表格的格式来完成这件事。所以我们需要分离这些单元格并且通过重新选择真正位于这些单元格中的数据来复制我们想要的数据。 一旦我们注意到以上这些窍门后,我们就可以得到以下所列出的这些结果: Sub Macro1() Range("A2").Select Selection.Copy Application.CutCopyMode = False Workbooks.Open Filename:= _ "http://visualbasic.about.com/library/bldykblkscpa.htm" Range("B10:C10").Select With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 1 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With Selection.UnMerge Range("B10").Select Selection.Copy ActiveWorkbook.Close Sheets("ResultsReports").Select Range("A2").Select ActiveSheet.Paste End Sub 这样看起来更好了。我们就可以使用这个来完成工作。现在我们就可以在其中加入某些所需要的循环逻辑来完成这个程序了。最后我们所看到的结果已经展示在文章最前面的图片中了。下面就是生成这些结果的一些代码: Sub CopyWebData() ' ' CopyWebData Macro ' Dim InCellLoc As String Dim InCellCol As String Dim InCellRow As String Dim NameValue As String Dim AddressValue As String Dim OutCellLoc As String Dim OutCellCol As String Dim OutCellRow As String InCellCol = "B" InCellRow = "2" OutCellRow = "1" InCellLoc = InCellCol & InCellRow Sheets("WebAddresses").Select Do While Range(InCellLoc).Value <> "" Sheets("WebAddresses").Select Workbooks.Open Range(InCellLoc).Value Range("B10:C10").Select Selection.UnMerge ArticleNameValue = Range("B10").Value ActiveWorkbook.Close (False) Windows("Start.xls").Activate Sheets("ResultsReports").Select OutCellRow = CStr(CInt(OutCellRow) + 1) OutCellCol = "A" OutCellLoc = OutCellCol & OutCellRow Range(OutCellLoc).Value = ArticleNameValue Sheets("WebAddresses").Select InCellRow = CStr(CInt(InCellRow) + 1) InCellLoc = InCellCol & InCellRow Loop End Sub
󰈣󰈤
 
 
 
>>返回首页<<
 
 热帖排行
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
©2005- 王朝网络 版权所有