Единственная причина, по которой он не работал у вас:
A. Путь к закрытому файлу. Попробуйте изменить эти расширения книги на .xlsm
и ссылаться на них полностью. И
Б. ShNew1.Delete
Сейчас пробую на своем компьютере, и он работает. Я хорошо наелся.
Избавиться от ShNew1.Delete
. Ваш CountA
работает так, как должен, с файлом closed .xlsm
. И просто поместите весь путь.
.. "C:\Users\User\Documents\... "
et c. Или что бы там ни было для вашего документа и его местоположения.
Я должен был сначала спросить, будет ли переименование ваших закрытых файлов в xlsm
, а затем запуск, как показано, на данный момент приемлемым обходным решением.
Я знаю, что вы можете массово переименовать, в том числе расширения, пока они закрыты. Так что, если вы довольны переименованием файлов .xlsm
, удалением ShNew1.Delete
и помещением всего пути в Fname1, тогда он вернет вам правильные значения даже при закрытии.
Sub main()
Dim FName1 As String
' Path to Family Mapping.xlsx
FName1 = "C:\Users\User\Documents\[MyFileName.xlsm]"
'get row count of closed workbook [Family Mapping.xlsx] Worksheet "BMS-DES-POBA"
Const ShName1 As String = "Sheet1"
Const ColNo1 As Integer = 1
Dim ShNew1 As Worksheet
Dim LastRow5 As Long
Dim LastRow6 As Long
Debug.Print FName1
Application.DisplayAlerts = False
Set ShNew1 = Worksheets.Add
With ShNew1.Range("A1")
'.FormulaR1C1 = "=COUNTa('" & FName1 & ShName1 & "'!C" & ColNo1 & ")"
'.FormulaR1C1 = "=COUNTif('" & FName1 & ShName1 & "'!C" & ColNo1 & "," & Chr(34) & "*" & Chr(34) & ")"
'.FormulaR1C1 = "=COUNTif('" & FName1 & ShName1 & "'!C" & ColNo1 & "," & Chr(34) & "*" & Chr(34) & ")"
''With ShNew1.Range("A2")
.FormulaR1C1 = "=COUNTA('" & FName1 & ShName1 & "'!C" & ColNo1 & ")"
LastRow5 = .Value
End With
'ShNew1.Delete
Application.DisplayAlerts = True
Debug.Print Trim(LastRow5) + 1
End Sub