在文件夹中的多个工作簿上运行宏时,效果仅应用于包含宏的工作簿

时间:2013-06-12 08:02:43

标签: excel-vba vba excel

我正在尝试运行一个宏,用一组工作簿中的复选框修正链接的单元格标识。

有许多(大约100个)工作簿需要在一个文件中进行调整。

因此我循环遍历这些文件并运行重新分配,但是,它只适用于我编写宏的文件:

Sub CheckBoxesControl()

On Error Resume Next
    Dim path As String
    Dim file As String
    Dim wkbk As Workbook
    Dim i As Long


    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    path = "C:\file\path\"
    file = Dir(path)

    Do While Not file = ""
        Workbooks.Open (path & file)
        Set wkbk = ActiveWorkbook

    For i = 1 To 400
        ActiveWorkbook.Sheet4.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AA" & i
        ActiveWorkbook.Sheet21.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AB" & i
        Activekbook.Sheet22.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AC" & i

    Next i

    wkbk.Save
    wkbk.Close
    file = Dir
    Loop

End Sub

有人能告诉我如何调整它以便将其应用于每个文件吗?

宏运行没有错误(实际上文件中的每个文件似乎都打开和关闭)。

1 个答案:

答案 0 :(得分:0)

不要使用ActiveWorkbook,它可能会混淆问题(与使用ActiveCell / Selection相同) - 这样做:

Do While Not file = ""
    Set wkbk = Workbooks.Open (path & file)

For i = 1 To 400
    wkbk.Sheet4.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AA" & i
    wkbk .Sheet21.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AB" & i
    wkbk .Sheet22.CheckBoxes("Check Box " & i).LinkedCell = "ChkBoxOutput!AC" & i

Next i

wkbk.Save
wkbk.Close
file = Dir
Loop