(VBA或公式)打开单元格的超链接,并从新的单元格值保存/重命名下载的文件

程序: Excel 2010
经验水平:基本

题:
我有一个链接表,我想打开每个链接(他们是一个安全的服务器上的.csv / .xlsx文件,我必须login),然后saveas与由第三行信息生成的文件名列Column (C)保持BatchID不变(如下)。

 | A | B | C | | Batch Date | links | New name | |------------|--------------|----------| | 3/03/2014 | View | 20140303 | | 2/05/2014 | View | 20140205 | | 1/02/2014 | View | 20140102 | | 12/01/2013 | View | 20131201 | | 11/01/2013 | View | 20131101 | | 10/01/2013 | View | 20131001 | | 9/01/2013 | View | 20130901 | | 8/01/2013 | View | 20130801 | 

链接可能会popup一个login(没关系,我有凭据,但如果使用VBA这将是更安全的硬编码,所以如果我错过了一个popup不会失速)。

该清单是广泛的,每月更新。
原始的csv / .xlsx文件名是相似的:
1036548025_detailed_sales_report.xls数字总是不一样的(因此上面的新列),但_detailed_sales_report.xls总是保持静态。

我最好喜欢通过使用通配符保持文件名? 所以像这样: savefilename = (A10) & "*" & "_detailed_sales_report.xls"

我已经从Excel打开超链接,但其中大部分是关于一般的超链接或打开链接的工作簿,而我想用它来下载新的工作。

编辑
每一行之间也需要有一个延迟,服务器的速度是非常慢的。

编辑3每个链接是新生成的链接,没有链接是相同的(如文件名):

  Range("C9").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Workbooks.Open Filename:="http://www.mylinkgoeshere.---/.php?pID=12898" 'the pID= is always different, its a dynamic report system ActiveWindow.Visible = False Windows("view_payment_orders.php").Visible = True ActiveWorkbook.SaveAs Filename:="D:\location\20140205.xlsx", _ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close 

以上是我运行macroslogging器时发生的情况,我不想在100多行代码中进行编码:-)循环可以在2个不同的列之间工作吗?

请帮忙,我从哪里出发?

我无法模拟你正在打开的链接,但你可以试试这个:

 Sub test() Dim hlink As Hyperlink Dim wb As Workbook Dim saveloc As String saveloc = "D:\location\" For Each hlink In ThisWorkbook.Sheets("NameOfYourSheet").Hyperlinks Set wb = Workbooks.Open(hlink.Address) wb.SaveAs saveloc & hlink.Parent & ".xlsx" wb.Close True Set wb = Nothing Next End Sub 

我认为Excel可以直接使用地址直接打开链接中的文件。
上面的代码是循环通过目标工作表中的所有超链接。
hlink.Address获取地址,然后在Workbooks.Open方法中使用它。
然后使用hlink.Parent作为文件hlink.Parent其另存为.xlsx文件。
hlink.Parent返回超链接的单词。
为了完成保存为path ,我们初始化文件位置saveloc
这是尝试testing,但只在我创build的链接在我的本地驱动器。

编辑1:保存使用超链接的相邻单元格值。

 For Each hlink In ThisWorkbook.Sheets("NameOfYourSheet").Hyperlinks Set wb = Workbooks.Open(hlink.Address) wb.SaveAs saveloc & hlink.Range.Offset(0,1).Value & ".xlsx" wb.Close True Set wb = Nothing Next 

hlink.Range返回超链接所在的Range Object
我们使用Offset属性到达相邻的单元格,然后获取文件名的值。