2017-09-25 82 views
0

我想在Excel中使用VBA宏在html文件中保存网页。不过,我是全新的VBA宏。为了下载并保存,我找到了这个代码,它的工作原理。Excel中的VBA宏保存单元格中的html文件

Option Explicit 
Private Declare Function URLDownloadToFileA Lib "urlmon" (ByVal pCaller As Long, _ 
    ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, _ 
    ByVal lpfnCB As Long) As Long 


Public Sub Example1() 
    DownloadFile "http://www.betbrain.pl/", "c:\p.html" 
End Sub 


Private Function DownloadFile(URL As String, LocalFilename As String) As Boolean 
    'Thanks Mentalis:) 
    Dim lngRetVal As Long 
    lngRetVal = URLDownloadToFileA(0, URL, LocalFilename, 0, 0) 
    If lngRetVal = 0 Then DownloadFile = True 
End Function 

但是我想做的另外,就是让URL地址和名字保存html文件两个参数来选择。我期望的代码是选择一系列包含URL的单元格,其他包含保存文件的路径和名称。我发现了下面的例子,并且我试图将这两个代码结合起来,但最终我在许多尝试中都没有取得成功。

Sub Proper_Case() 
    'Updateby20150428 
    Dim x As Range 
    Dim Workx As Range 

    On Error Resume Next 

    xTitleId = "KutoolsforExcel" 
    Set Workx = Application.Selection 
    Set Workx = Application.InputBox("Range", xTitleId, Workx.Address, Type:=8) 

    For Each x In Workx 
     x.Value = Application.Proper(x.Value) 
    Next 
End Sub 

您能否给些帮助?
在此先感谢,海梅。

回答

1

我认为这可以工作。我假设您的网址和目标文件范围的大小相同,并且第一个网址和目标网址一致。换句话说,第一个URL保存到列表中的第一个目的地,第二个URL保存到第二个目的地等。

Sub getURLS() 
Dim x  As Range, urlRange As Range, saveToRange As Range 
Dim i As Long 

i = 1 

Set urlRange = Application.InputBox("Range of URLs", "URLS", Type:=8) 
Set saveToRange = Application.InputBox("Range of destinations", "Destinations", Type:=8) 

For Each x In urlRange 
    DownloadFile x.Value, saveToRange.Cells(i, 1).Value 
    i = i + 1 
Next 

End Sub 
相关问题