0

如果我还想问:我有包含某些链接的现金提款文件。12 月从 11 月的某些单元格获取信息。是否有可能当我打开 12 月以自动收集 11 月的链接而无需更改“=+'C:\Stores\Fego Caffe Irene\Cash Ups\2011[Fego Caffe June 2011.xlsm]Daily Breakdown'!$ E $ 42”每次我节省一个新的月份。所以如果我创建一个 1 月文件,它必须自动链接​​到 12 月,而我不必一直手动更改公式?

基本上问。我刚刚创建了一个 2013 年 1 月的现金提成文件,该文件从 2012 年 12 月获取信息。现在我在 1 月单元格中的公式是“=+'C:\Stores\Fego Caffe Irene\Cash Ups\2012[Fego Caffe 2012 年 11 月.xlsm] Daily Breakdown'!$E$42" 现在发生的事情是我现在必须取消保护工作表并手动将 11 月更改为 12 月,以便 1 月可以链接到 2012 年 12 月的文件。

是否有可能有一个 VB 宏,当您打开一月文件时,它会自动链接到 2012 年 12 月等其他月份。本月取自上月。

抱歉,在这方面还是很新

感谢你的帮助!!!!

4

1 回答 1

2

您可以使用Workbook.LinkSources获取链接文件列表,然后使用Workbook.ChangeLink. 刷新数据Workbook.UpdateLink

这是您可以在创建新的 Months 工作簿后调用的宏。

它将打开一个对话框供您选择要链接到的文件

为简单起见,它被编写为在代码中包含保护密码,但你知道如何提示它,所以我将把它留给你。

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所有模块放在顶部,它将迫使您养成始终声明变量的良好做法。

于 2012-10-16T09:11:02.070 回答