modo - Usar un comodín para abrir un libro de Excel
libro binario de excel (4)
Quiero utilizar un comodín para abrir un libro de trabajo almacenado en la misma carpeta que mi libro de trabajo de macro. En la carpeta hay un archivo llamado 302113-401yr-r01.xlsm
. Aquí está mi código:
Workbooks.Open filename:=ActiveWorkbook.Path & "/302113*.xlsm"
Sin embargo, me dice que no hay tal archivo. ¿Algún consejo?
Desde mi experiencia esto funciona si tienes el comodín / asterisco como el último símbolo en la cadena y si solo hay un archivo. Trata de hacerlo:
Workbooks.Open filename:=ActiveWorkbook.Path & "/302113*"
Por ejemplo, estoy usando:
Workbooks.Open Filename:="X:/business/2014/Easy*"
y funciona.
No podemos abrir un archivo con un comodín: ¡imagina el caos si pudiéramos!
Tendrá que usar Dir(ActiveWorkbook.Path & "/302113*.xlsm")
para recorrer los archivos que esto devuelve. Si solo habrá uno, solo usa esta función una vez:
Dim sFound As String
sFound = Dir(ActiveWorkbook.Path & "/302113*.xlsm") ''the first one found
If sFound <> "" Then
Workbooks.Open filename:= ActiveWorkbook.Path & "/" & sFound
End If
Función Dir : tecnología en la red
Puede abrir archivos utilizando el comodín, pero solo con rutas UNC por alguna razón.
Por ejemplo :
Set xlFile = xlObj.WorkBooks.Open("//yourServerHere/dataAutomation/*.xlsx")
Todavía no tengo tanta experiencia con Excel, pero lo siguiente me funciona bien para usar comodines en nombres de archivo para abrir archivos. Este ejemplo requiere que todos los archivos estén en el mismo directorio / carpeta. Sí, es bastante simplista.
Sub using_wildcards_to_open_files_in_excel_vba()
Dim mypath As String
Dim sFilename As String
''Suppose you have three files in a folder
'' Named blank.xlsx,, ex1_939_account.xlsx, and ex1_opt 5.xlsx
''Manually open the blank.xlsx file
''The following code lines will open the second two files before closing the previously opened file.
ActiveWorkbook.Activate
mypath = ActiveWorkbook.Path
''opening xlsx file with name containing "939" and closing current file
mypath = mypath & "/*939*.xlsx"
''MsgBox mypath ''Checking
sFilename = Dir(mypath)
''MsgBox sFilename ''Checking
ActiveWorkbook.Close savechanges:=False
Workbooks.Open Filename:=sFilename
ActiveWorkbook.Activate
mypath = ActiveWorkbook.Path
''opening xlsx file with name ending in "opt 5" and closing current file
mypath = mypath & "/*opt 5.xlsx"
''MsgBox mypath ''Checking
sFilename = Dir(mypath)
''MsgBox sFilename ''Checking
ActiveWorkbook.Close savechanges:=False
Workbooks.Open Filename:=sFilename
End Sub