variable valor una ultima seleccionar referencia rango otra macro hoja hasta hacer desde datos con celda asignar activesheet activa excel vba excel-vba path cell

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"