Застрял на этом. Я создаю макрос Excel 2016, который (будем надеяться) пропустит oop через все файлы .xls в папке и внесет некоторые изменения в форматирование, однако мой workbook.open не открывает файл .xls. Кажется, он просто смотрит прямо на него? Я снял все флажки в центре управления безопасностью, так почему бы не открыть файл .xls в моем коде VBA? Что-нибудь еще я могу попробовать? Это работает, если файл имеет формат .xlsx, но не .xls по какой-то причине. Соответствующий раздел кода ниже. Спасибо!
ОБНОВЛЕНИЕ
В соответствии с просьбой, я попытаюсь получить здесь более техническую информацию. Здесь я добавил полный сценарий (без каких-либо дополнительных средств форматирования), чтобы кто-то со мной справился.
Интересно отметить следующее:
Даже если он у меня есть он настроен на поиск только .xls
типов файлов в l oop, по некоторым причинам он выполняет все мои команды форматирования в текущей книге макроса .xlsm
, чего не должно быть. В качестве обходного пути я также включил строку
' Start a loop for all .xlsx files in the folder (defined in the last step)
Do While Filename <> "" And Filename <> "Bid_Report_Macro.xlsm" ' This workbook's name
, чтобы предотвратить это в текущей рабочей книге. Я бы заметил, что все мои действия по форматированию будут выполняться после того, как я нажму эту кнопку в той же книге, а не в файле .xls, который должен открываться первым. Не спрашивайте меня, почему это происходит, потому что я действительно не знаю.
Кроме того, файл .xls
, который я пытаюсь открыть, является файлом Microsoft Excel 97-2003 Worksheet (.xls)
. Я снял все флажки в Центре управления безопасностью в отношении блокировки открытия определенных типов файлов / блокировки файлов. Если я запустите этот же код, но вместо этого поставлю все файлы .xlsx
в папку, это сработает. Так что я не знаю, почему это не работает для файлов .xls
. Когда я нажимаю кнопку макроса, ничего не происходит.
Я пытался включить CorruptLoad:=xlExtractData
и CorruptLoad:=xlRepairFile
в функцию открытия, но это тоже ничего не дало.
Я попробовал приведенные ниже предложения, но они не сделали Работа. Я предполагаю, что это как-то связано с моей локальной машиной, так как это рабочий компьютер, но я действительно не знаю, где искать, и я хотел бы завершить этот проект.
Есть идеи? Спасибо.
Sub Bid_Report_Function()
' Create (but don't define yet) some variables used throughout
Dim folderPath As String
Dim Filename As String
Dim wb As Workbook
Dim SrchRng As Range, cel As Range
Dim EmptyDays As Integer
' Run it in the background.
Application.ScreenUpdating = False
' Directory of this macro that has the other .xls files
folderPath = Application.ActiveWorkbook.Path
' A conditional for finding the directory with proper structure
If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
' Do this for each xls workbooks in the folder
Filename = Dir(folderPath & "*.xls")
' Start a loop for all .xlsx files in the folder (defined in the last step)
Do While Filename <> "" 'And Filename <> "Bid_Report_Macro.xlsm" ' This workbook's name
' Open a workbook in the folderPath
Set wb = Workbooks.Open(folderPath & Filename, CorruptLoad:=xlRepairFile)
' Always start on the first worksheet of the opened workbook
wb.Worksheets(1).Activate
'......my formatting code is here. Skipping to the end...
' Rename the current tab
wb.ActiveSheet.Name = "RENAMED TAB"
' Save as, a copy as a .xls file
wb.SaveAs Filename:="TEST.xls"
' Close but don't save the current workbook to keep it the same
wb.Close False
' This prevents the macro from doing all of the above endlessly.
Exit_Loop:
Set wb = Nothing
Filename = Dir
' Next workbook in the directory
Loop
' Can turn screen updating back on
Application.ScreenUpdating = True
' End program
End Sub