Хорошо, ребята, извините, если тег кода не работает, я не был в переполнении стека в какой-то момент. В любом случае, это проблема, с которой я столкнулся, и я уверен, что знаю, что происходит, но я мог бы воспользоваться некоторой помощью. Код ниже. Я в основном открываю книгу excel, которая будет хранить пути к файлам на разных книгах на моем компьютере, и я помещаю их в массив. Массив правильно хранит данные в окне сообщения отладки, которое я использую, но когда он попадает в строку «Установить tempBook = filePathArray (i, 1)« Я получаю ошибку «424 Object Required». Теперь я знаю, что элемент в массиве, который я просматриваю в строке Set tempBook, просматривает путь к файлу. Моя теория заключается в том, что информация, хранящаяся в массиве, может иметь специальное форматирование, которое не позволяет Set tempBook распознавать строку как путь к файлу. Извините, если это действительно просто, это мой первый опыт работы с VBA и макросами. Я предпочитаю Java и C#. Во всяком случае, ребята и девочки могут быть очень благодарны. Также для безопасности я изменяю информацию о пути файла для файлаPathBook перед публикацией.VBA-Excel Получение пути к файлу из структуры массива
Резюмируя:
Я извлечение информации о пути к файлу из книги на моем рабочем столе и хранить его в массив, каждая ячейка в этой книге проводит полный путь файла в книгу
I» m, затем запускает цикл, который будет проходить через массив, по одному элементу за раз в течение цикла и пытается вытащить каждый путь файла отдельно, получить некоторые данные, а затем сделать это снова со следующим путём файла в массиве.
Ошибка, которую я получаю, заключается в том, что при попытке вытащить первый путь к файлу из массива и поместить его в переменную, которая настроена как рабочая книга, я получаю ошибку «424 Object Required» ,
У меня есть поле для сообщения отладки, поэтому я знаю, что место, на которое вы смотрите, содержит правильную информацию о пути к файлу, но я считаю, что форматирование массива может вызвать проблемы.
Любая помощь для облегчения этой проблемы была бы весьма признательна.
Sub get_data_from_file()
Dim actBook As Workbook 'active workbook
Dim filePathBook As Workbook 'filepath workbook
Dim pasteCounter As Integer 'paste counting variable in loop
Dim counter As Integer 'loop counter
'This sets the workbook the macro is in to be the active workbook to paste too
Set actBook = ActiveWorkbook
'Turn off screen update to speed up macro and make it not seem like the screen flashes
Application.ScreenUpdating = False
'set the filePathBook to point to the workbook storing the file paths for other books
Set filePathBook = Workbooks.Open("C:directory info\filePathBook")
Dim filePathArray As Variant 'declare array
'retrieve data from range cells and store in array, these are the file paths for other books
filePathArray = filePathBook.Sheets("Sheet1").Range("a1:a2").Value
'Save and close filePathBook
filePathBook.Save
filePathBook.Close
pasteCounter = 1 'initialize paste counter variable, it's used to move cell paste locations
'declare another workbook to use as the temporary variable in the loop to open and retrieve info from each workbook in the array
Dim tempBook As Workbook
'Looping structure to look at array and perform functions.
For i = 1 To UBound(filePathArray)
MsgBox filePathArray(i, 1) 'Debugging purposes: files are being stored properly
Set tempBook = filePathArray(i, 1) 'get first workbook filepath and store in tempBook
tempBook.Sheets("Sheet1").Range("a1:a4").Copy 'Copy cells a1:a4 from workbook
actBook.Sheets("Sheet1").Activate 'Activate current book, this ensures it is always active in each run of the loop
ActiveSheet.Cell(a, pasteCounter).Select 'Select proper cell to paste values down from
Selection.PasteSpecial Paste:=xlPasteValues 'Paste Values
pasteCounter = pasteCounter + 4 'increment paste counter to select cells below pasted cells each iteration
'save and close tempBook
tempBook.Save
tempBook.Close
Next i
'Turn screen updating back on
Application.ScreenUpdating = True
End Sub