将单元格链接到以前的工作簿

时间:2012-10-16 08:52:34

标签: excel excel-vba vba

如果我也可能会问:我有拥有某些链接的现金文件。十二月从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月,依此类推其他月份。当前月份来自上个月。

对不起还是很新的

感谢您的帮助!!!!

1 个答案:

答案 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放在所有模块的顶部,它将迫使你进入总是声明变量的良好做法。