visual valor una ultima seleccionar para modificar macro hasta example datos con columna codigos codigo celda buscar archivos abrirlos excel-vba file-io vba excel

excel vba - valor - Abra el archivo de Excel para leer con VBA sin pantalla



range.find vba excel example (9)

Quiero buscar a través de archivos de Excel existentes con una macro, pero no quiero mostrar esos archivos cuando el código los abre. ¿Hay alguna manera de tenerlos abiertos "en el fondo", por así decirlo?


Ábrelos desde una nueva instancia de Excel.

Sub Test() Dim xl As Excel.Application Set xl = CreateObject("Excel.Application") Dim w As Workbook Set w = xl.Workbooks.Add() MsgBox "Not visible yet..." xl.Visible = True w.Close False Set xl = Nothing End Sub

Debes recordar limpiar después de que hayas terminado.


A pesar de que tiene su respuesta, para aquellos que encuentran esta pregunta, también es posible abrir una hoja de cálculo de Excel como un almacén de datos JET. Tomando prestada la cadena de conexión de un proyecto en el que la he usado, se verá así:

strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & objFile.Path & ";Extended Properties=""Excel 8.0;HDR=Yes""" strSQL = "SELECT * FROM [RegistrationList$] ORDER BY DateToRegister DESC"

Tenga en cuenta que "RegistrationList" es el nombre de la pestaña en el libro de trabajo. Hay algunos tutoriales que flotan en la web con los detalles de lo que puede y no puede hacer accediendo a una hoja de esta manera.

Solo pensé en agregar. :)


Abra el libro de trabajo como oculto y luego configúrelo como "guardado" para que no se le pregunte a los usuarios cuando se cierran.

Dim w As Workbooks Private Sub Workbook_Open() Application.ScreenUpdating = False Set w = Workbooks w.Open Filename:="//server/PriceList.xlsx", UpdateLinks:=False, ReadOnly:=True ''this is the data file were going to be opening ActiveWindow.Visible = False ThisWorkbook.Activate Application.ScreenUpdating = True End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) w.Item(2).Saved = True ''this will suppress the safe prompt for the data file only End Sub

Esto es algo derivado de la respuesta publicada por Ashok.

Al hacerlo de esta manera, no se le pedirá que guarde los cambios en el archivo de Excel desde donde lee. Esto es genial si el archivo de Excel de su lectura pretende ser una fuente de datos para la validación. Por ejemplo, si el libro de trabajo contiene nombres de productos y precios, puede ocultarse y puede mostrar un archivo de Excel que represente una factura con menús desplegables para productos que validen desde esa lista de precios.

A continuación, puede almacenar la lista de precios en una ubicación compartida en una red en algún lugar y hacerla de solo lectura.


El problema con las respuestas de iDevlop y Ashok es que el problema fundamental es una falla de diseño de Excel (aparentemente) en la que el método Open no respeta la configuración Application.ScreenUpdating de False. En consecuencia, establecerlo en False no es beneficioso para este problema.

Si la solución de Patrick McDonald es demasiado onerosa debido a la sobrecarga de comenzar una segunda instancia de Excel, entonces la mejor solución que he encontrado es minimizar el tiempo que el libro abierto es visible al reactivar la ventana original lo más rápido posible:

Dim TempWkBk As Workbook Dim CurrentWin As Window Set CurrentWin = ActiveWindow Set TempWkBk = Workbooks.Open(SomeFilePath) CurrentWin.Activate ''Allows only a VERY brief flash of the opened workbook TempWkBk.Windows(1).Visible = False ''Only necessary if you also need to prevent ''the user from manually accessing the opened ''workbook before it is closed. ''Operate on the new workbook, which is not visible to the user, then close it...


En Excel, oculte los libros de trabajo y guárdelos como ocultos. Cuando su aplicación los carga, no se mostrarán.

Editar: al volver a leer, quedó claro que estos libros de trabajo no son parte de su aplicación. Tal solución sería inapropiada para los libros de trabajo de los usuarios.


No estoy seguro de si puede abrirlos de forma invisible en la instancia de Excel actual

Sin embargo, puede abrir una nueva instancia de excel, ocultarla y luego abrir los libros de trabajo

Dim app as New Excel.Application app.Visible = False ''Visible is False by default, so this isn''t necessary Dim book As Excel.Workbook Set book = app.Workbooks.Add(fileName) '' '' Do what you have to do '' book.Close SaveChanges:=False app.Quit Set app = Nothing

Como han publicado otros, asegúrese de limpiar después de que haya terminado con los libros de trabajo abiertos


Para abrir un libro como oculto en la instancia existente de Excel, use lo siguiente:

Application.ScreenUpdating = False Workbooks.Open Filename:=FilePath, UpdateLinks:=True, ReadOnly:=True ActiveWindow.Visible = False ThisWorkbook.Activate Application.ScreenUpdating = True


Si eso se adapta a sus necesidades, simplemente usaría

Application.ScreenUpdating = False

con el beneficio adicional de acelerar su código, en lugar de reducirlo utilizando una segunda instancia de Excel.


Un enfoque mucho más simple que no implica la manipulación de ventanas activas:

Dim wb As Workbook Set wb = Workbooks.Open("workbook.xlsx") wb.Windows(1).Visible = False

Por lo que puedo decir, el índice de Windows en el libro de trabajo siempre debe ser 1 . Si alguien sabe de alguna condición de carrera que haga que esto no sea cierto, por favor avíseme.