Проблемы со сценарием VBA - ошибка функции поиска Find - PullRequest
0 голосов
/ 07 июня 2018

Отказ от ответственности: Хорошо, так что обо всем по порядку - я новичок в VB-скриптинге, поэтому тестирование и компиляция сейчас являются чем-то вроде кривой обучения ..

Моя цель: Пожалуйста, исправьте меня везде, где я ошибаюсь - в настоящее время я использую Visual Studio 2017 для редактирования и тестирования моего VB-скрипта, и мне нужно, чтобы он сделал следующее:

  1. Запуск назаданная папка ищет файлы Excel .xlsx
  2. Найдите ячейку со значением «Дата» на листе с именем «Настройка» в каждом файле
    • Если его там нет, пропустите файл
    • Если это так - обновите ячейку справа от нее до сегодняшней даты.
  3. Обновите все соединения в файле, сохраните его и перейдите к следующему
  4. Повторяйте, пока все не будет сделано

Пока что он открывает все файлы в данной папке, обновляет соединения, сохраняет и закрывает - но мне нужно это сделать Шаг 2 выше .. Не обращайте внимания на закомментированные части, которые работают.

Текущее состояние

Первая попытка выглядит следующим образом (хотя и не полностью) - теперь появляется ошибка при построении решения, говорящая, что мне нужно «объявить» xlValues, xlWhole и xlByRows, которые все равно должны быть частью функции Find как параметры в качестве параметров??

Module RefreshAll_Folder
Sub Main()
                Dim ConnectivityPath, RefreshDate, fso, xl, EOMloop, SetupPage, wb
                Dim sval As Range

                '--- Set variables ---
                SetupPage = "Setup"
                RefreshDate = Now
                ConnectivityPath= "<networkpath>\Connectivity"

                fso = CreateObject("Scripting.FileSystemObject")
                xl = CreateObject("Excel.Application")
                EOMloop = fso.GetFolder(ConnectivityPath).Files


                '--- FOR CONNECTIVITY ---

                xl.Visible = True

                For Each f In EOMloop
                    If LCase(fso.GetExtensionName(f.Name)) = "xlsx" Then
                        wb = xl.Workbooks.Open(f.Path)
                        wb = wb.Sheets(SetupPage).Range("A1:F7")

                        sval = wb.Find(What:="Date", LookIn:=xlValues,
                                LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,
                                MatchCase:=False, SearchFormat:=False)

                        wb.select(sval)

                        ' wb.Worksheets("Setup").Range("B2").Value = Now
                        '    wb.RefreshAll

                        wb.Save
                        wb.Close
                    End If
                Next

                xl.Quit
            End Sub
End Module

Спасибо за помощь заранее!

...