Я ежедневно запускаю этот код, который будет влиять на каждую рабочую книгу .xlsx в каталоге, но как я могу игнорировать книгу, если имя файла не находится в массиве «Okay»?Только открытые рабочие книги
Это мой текущий синтаксис:
Option Explicit
Public Sub OpenExcelInDir()
Dim MyFolder As String
Dim MyFile As String
MyFolder = "C:\ExcelSheets"
MyFile = Dir(MyFolder & "\*.xlsx")
Do While MyFile <> ""
Workbooks.Open Filename:=MyFolder & "\" & MyFile
MyFile = Dir
Call UpdateAllSheets
Loop
End Sub
Теперь я хочу, чтобы изменить его так, что я могу объявить массив строк и только открыть рабочие книги в чем-то массив, как так:
Dim goodWB() As String
goodWB= Split("ABC123,DEF456,GHI789", ",")
Помните, что функция 'Filter' выполняет поиск частичных совпадений или подмножество строки, используемой в качестве фильтра. Поэтому его результаты не соответствуют требованиям OP, как в случае, если папка содержит файл с именем 'xABC123.xlsx', он будет открыт, так как это частичное совпадение предполагаемого файла' ABC123.xlsx' – EEM
@EEM У вас есть хороший за исключением того, что я изменил массив, включив расширение файла. Очень маловероятно, что имя файла с расширением будет включено в другое имя файла. Попробуйте, AABC123 или ABC1233 не будут найдены, только ABC123. Итак ... Я верю, что это соответствует требованиям OP, и это просто еще один способ сделать это. Не самый быстрый, но он избегает другого цикла и работает с использованием большей части исходного кода. Cheers –
Я пробовал, что уже прочитал, таким образом, свой комментарий. Программирование мудрых не очень хорошо, когда программа вряд ли не сработает, чем это, безусловно, потерпит неудачу. Это вопрос стандартов и качества ... – EEM