如果我也可能会问:我有拥有某些链接的现金文件。十二月从11月的某些单元格获取信息。是否有可能当我打开12月从11月开始自动收集链接而不必改变“= +'C:\ Stores \ Fego Caffe Irene \ Cash Ups \ 2011 [Fego Caffe June 2011.xlsm]每日细分'!$ E $ 42“每次我节省新的一个月。因此,如果我创建一个1月文件,它必须自动链接到12月,而不必我整个时间手动更改公式??
基本上问。我刚刚创建了一个2013年1月的现金申请文件,该文件从2012年12月开始提供信息。现在我在1月份的单元格是“= +'C:\ Stores \ Fego Caffe Irene \ Cash Ups \ 2012 [Fego Caffe November 2012.xlsm]每日细分'!$ E $ 42“现在发生的事情是我现在必须取消保护工作表并手动将11月更改为12月,以便1月份可以链接到2012年12月的文件。
是否可以使用VB宏,当您打开1月文件时,它会自动链接到2012年12月,依此类推其他月份。当前月份来自上个月。
对不起还是很新的
感谢您的帮助!!!!
答案 0 :(得分:2)
您可以使用Workbook.LinkSources
获取链接文件列表,然后使用Workbook.ChangeLink
更改所需的任何内容。使用Workbook.UpdateLink
这是在创建新月份工作簿后可以调用的宏。
将打开一个对话框,供您选择要链接的文件
为简单起见,编写代码中包含保护密码,但您知道如何提示它,所以我会留给您。
Sub UpdateLink()
Dim strFile As String
Dim aLinks As Variant
Dim i As Long
Dim strLink As String
Dim strLinkNew As String
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Show
If .SelectedItems.Count > 0 Then
strLinkNew = .SelectedItems(1)
aLinks = ThisWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(aLinks) Then
For i = 1 To UBound(aLinks)
strLink = aLinks(i)
If strLink Like "*\Fego Caffe Irene*.xlsm" Then
' Change Linked File
ThisWorkbook.Worksheets("Links").Unprotect "YourPassword"
ThisWorkbook.ChangeLink Name:=strLink, NewName:=strLinkNew, Type:=xlExcelLinks
ThisWorkbook.Worksheets("Links").Protect "YourPassword"
End If
Next
End If
End If
End With
End Sub
值得注意的一件事是:你对一些但不是所有变量进行了分解。如果你将Option Explicit
放在所有模块的顶部,它将迫使你进入总是声明变量的良好做法。