Вопрос:
Я запускаю скрипт VBA для подсчета количества строк в каждом файле в выбранной папке, а затем для отображения его в активной книге.
Option Explicit Sub CountRows() Dim wbSource As Workbook, wbDest As Workbook Dim wsSource As Worksheet, wsDest As Worksheet Dim strFolder As String, strFile As String Dim lngNextRow As Long, lngRowCount As Long Application.ScreenUpdating = False Set wbDest = ActiveWorkbook Set wsDest = wbDest.ActiveSheet strFolder = Dir(Range(«C7»).Value) strFile = Dir(strFolder & «*.xlsx») lngNextRow = 11 Do While Len(strFile) > 0 Set wbSource = Workbooks.Open(Filename:=strFolder & strFile) Set wsSource = wbSource.Worksheets(1) lngRowCount = wsSource.UsedRange.Rows.Count wsDest.Cells(lngNextRow, «F»).Value = lngRowCount wbSource.Close savechanges:=False lngNextRow = lngNextRow + 1 strFile = Dir Loop Application.ScreenUpdating = True End Sub
Выбрав папку, я хотел бы использовать каталог, который вставляется в активную ячейку WorkBook “C7” вместо написания каталога в скрипте. Я попытался заменить:
strFolder = «C:UsersuserDesktop»
с
strFolder = Dir(Range(«C7»).Value)
Но это не работает. Может, у кого-то есть идеи? Благодарю!
Лучший ответ:
Эта строка strFolder = Dir(Range(«C7»).Value) находит файл firts в каталоге (из C7), а затем записывает путь к этому файлу в переменную strFolder (скажем, C:tempsomefile.txt).
Следующая строка вашего кода: strFile = Dir(strFolder & «*.xlsx») принимает этот путь и добавляет *.xlsx. В результате вы получите strFile = Dir(«C:tempsomefile.txt*.xlsx») и это неправильно.
Итак, измените этот код:
strFolder = Dir(Range(«C7»).Value) strFile = Dir(strFolder & «*.xlsx»)
к следующему:
strFolder = Range(«C7»).Value strFile = Dir(strFolder & «*.xlsx»)
Кстати, я бы рекомендовал вам указать листок для Range(«C7») следующим образом: wsDest.Range(«C7»)
Ответ №1
Попробуй это
dim strPath as string strPath = CurDir + «NameofFile.xls»