excel - valor - seleccionar rango variable vba
¿Cómo usar la ruta del archivo desde una celda en VBA? (2)
Estoy ejecutando un script de VBA para contar el número de filas en cada archivo en una carpeta seleccionada y luego mostrarlo en un libro activo.
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
Al elegir una carpeta, me gustaría usar el directorio que está insertado en una celda de WorkBook activa "C7" en lugar de escribir un directorio en una secuencia de comandos. Traté de sustituirlo:
strFolder = "C:/Users/user/Desktop/"
con
strFolder = Dir(Range("C7").Value)
Pero no funciona. Tal vez alguien tiene alguna idea? ¡Gracias!
Esta línea strFolder = Dir(Range("C7").Value)
encuentra el primer archivo en el directorio (desde C7
) y luego escribe la ruta de este archivo en la variable strFolder
(por ejemplo, C:/temp/somefile.txt
).
La siguiente línea de su código: strFile = Dir(strFolder & "*.xlsx")
toma esta ruta y agrega *.xlsx
. En resultado obtendrías strFile = Dir("C:/temp/somefile.txt*.xlsx")
y eso es incorrecto.
Por lo tanto, cambie este código:
strFolder = Dir(Range("C7").Value)
strFile = Dir(strFolder & "*.xlsx")
a la siguiente:
strFolder = Range("C7").Value
strFile = Dir(strFolder & "*.xlsx")
Por cierto, te recomiendo que especifiques una hoja para Range("C7")
como esta: wsDest.Range("C7")
Prueba esto
dim strPath as string
strPath = CurDir + "NameofFile.xls"