【发布时间】:2022-01-09 00:31:14
【问题描述】:
提前感谢大家的帮助。
我的代码可以在循环内的不同文件上运行,但是,这些文件有不同名称的选项卡。我需要保护一些标签(文件中可能存在也可能不存在)。
应该是这样的:
Sub AtualizarCOFAGRO()
'this sets your template workbook/worksheet
Dim copyWB As Workbook
Dim copyWS As Worksheet
Dim rInfo As Range
Set copyWB = Workbooks("Atualização de COF")
Set copyWS = copyWB.Sheets("Cadastro COF")
Set rInfo = copyWS.Range(Cells(1, 1), Cells(copyWS.Range("A" & Rows.Count).End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column)) 'copiar todas as linhas e colunas com valores do arquivo
'this creates a collection of all filenames to be processed
Dim loopFolder As String
Dim fileNm As Variant
Dim myFiles As New Collection
'Optimize Macro Speed
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
'''don't forget the backslash before the final double-quote below
loopFolder = "J:\Files\Dept Produtos\Testes Macro Simulador\Arquivos para atualização\"
fileNm = Dir(loopFolder & "*.xlsm")
Do While fileNm <> ""
myFiles.Add fileNm
fileNm = Dir
Loop
'this loops through all filenames and copies your copyWS to the beginning
Dim wb As Workbook
For Each fileNm In myFiles
Set wb = Workbooks.Open(Filename:=(loopFolder & fileNm))
wb.Unprotect "Senha453" 'desbloquear planilha
wb.Sheets("infomacro").Range("B2").ClearContents
wb.Sheets("Cadastro COF").Cells.Clear 'limpar toda planilha dos arquivos abertos no loop
rInfo.Copy
wb.Sheets("Cadastro COF").Range("A1").PasteSpecial xlPasteAll
wb.Sheets("infomacro").Range("B2").Value = Date
wb.Sheets("infomacro").Range("B2").NumberFormat = "dd/mm/yyyy"
wb.Sheets("infomacro").Visible = False
wb.Sheets("Cadastro COF").Visible = False
Application.Calculation = xlCalculationAutomatic
wb.Protect "Senha453" 'bloquear planilha
这是我无法解决的部分:
工作表的名称可以是“input dados”或“CDC”或“LEASING”。我想保护它们是否存在,如果不存在,则代码恢复到下一行。
wb.Sheets("input dados").Protect "Senha453"
**or**
wb.Sheets("LEASING").Protect "Senha453"
**or**
wb.Sheets("CDC").Protect "Senha453"
然后跟随
Calculate
wb.Save
Dim inf As Worksheet
Dim name As String
Dim savefolder As String
Set inf = wb.Sheets("Cadastro COF")
savefolder = "J:\Files\Dept Produtos\Testes Macro Simulador\Atualizados\"
name = wb.Sheets("infomacro").Range("b3").Value
wb.SaveAs Filename:=savefolder & name & ".xlsm"
wb.Close
Next
重置宏优化设置
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.AskToUpdateLinks = Trueele
结束子
【问题讨论】:
标签: excel vba password-protection