Estoy trabajando en un proyecto de VBA basado en un libro de trabajo. El código abre un nuevo libro de trabajo y llama a una API externa que descarga e inserta un montón de datos en varias hojas de trabajo de este nuevo libro de trabajo. Desactivé la Actualización de pantalla (Application.Screenupdating = False
), por lo que inicialmente la pantalla permanece enfocada en el libro original mientras que la API descarga datos en el otro libro en segundo plano. Sin embargo, la pantalla cambia al nuevo libro de trabajo una vez que la API inserta los datos. ¿Cómo puedo evitar que esto suceda? ¡Gracias!Ocultar el libro de trabajo activo mediante programación en Excel
Respuesta
O bien debe guardar y cerrar el libro de trabajo de destino o seleccionar el libro de trabajo original antes de volver a activar la actualización de pantalla.
Usted podría tratar de usar la función de la API ShowWindow:
Public Declare Function ShowWindow Lib "user32.dll" _
(ByVal HWND As Long, ByVal nCmdShow As Long) As Long
Const SW_HIDE as Long = 0
Const SW_SHOW as Long = 5
ShowWindow otherWorkbookApplication.Hwnd, SW_HIDE
'Your code here
ShowWindow otherWorkbookApplication.Hwnd, SW_SHOW
O, alternativamente, la función API LockWindowUpdate (gracias al chip de Pearson, http://www.cpearson.com/excel/vbe.aspx):
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal ClassName As String, ByVal WindowName As String) As Long
Private Declare Function LockWindowUpdate Lib "user32" _
(ByVal hWndLock As Long) As Long
Sub EliminateScreenFlicker()
Dim VBEHwnd As Long
On Error GoTo ErrH:
Application.VBE.MainWindow.Visible = False
VBEHwnd = FindWindow("wndclass_desked_gsk", _
Application.VBE.MainWindow.Caption)
If VBEHwnd Then
LockWindowUpdate VBEHwnd
End If
'''''''''''''''''''''''''
' your code here
'''''''''''''''''''''''''
Application.VBE.MainWindow.Visible = False
ErrH:
LockWindowUpdate 0&
End Sub
ocultar el libro activo es posible con
ActiveWorkbook.Windows(1).Visible = False
Es posible que debas reemplazar ActiveWorkbook
con una referencia apropiada si el libro de trabajo en cuestión no es el activo y/o agregue un bucle como For i = 1 To ActiveWorkbook.Windows.Count
si el libro de trabajo tiene varias ventanas.
+1 Este método es simple de usar y simplemente puede ejecutarlo nuevamente con "Verdadero" una vez que el código ha terminado de ejecutarse –
- 1. Valor de configuración del libro activo en Excel VBA
- 2. Cómo copiar datos de otro libro de trabajo (excel)?
- 3. Cómo eliminar hojas de trabajo de Excel del libro de trabajo de excel en C#?
- 4. ejecutando excel macro desde otro libro de trabajo
- 5. ¿Cómo ocultar una vista mediante programación?
- 6. escribiendo texto largo en el libro de trabajo de excel usando el error de interpo throws?
- 7. cómo actualizar el espacio de trabajo de eclipse mediante programación?
- 8. Interoperabilidad de Excel: guardar el libro de trabajo sin mostrar el diálogo de guardar
- 9. cómo ocultar mediante programación identificador de llamadas en Android
- 10. Use SSIS para rellenar el libro de Excel generado mediante OOXML
- 11. Recuperación de datos del libro de trabajo cerrado mediante una conexión ADODB. Algunos datos se saltan?
- 12. ¿Elegir entre el complemento de Excel, la plantilla y el libro de trabajo?
- 13. Insertar comentarios de celda en Excel mediante programación
- 14. Creación mediante programación de hojas de Excel 2007
- 15. la creación de grandes hojas de Excel mediante programación
- 16. Cancelar mediante programación un flujo de trabajo de SharePoint
- 17. Cómo proteger el libro de Excel utilizando VBA?
- 18. Abrir diferentes pestañas del mismo libro de trabajo en diferentes ventanas en Excel 2010
- 19. VBA - ¿Cómo copiar una fila en Excel de un libro de trabajo a otro?
- 20. ¿Cómo protejo toda la hoja de trabajo en un libro de Excel con un solo clic?
- 21. macro para Ocultar filas en excel 2010
- 22. En Excel VSTO, ¿cómo puedo verificar si una hoja de trabajo pertenece a un libro cerrado?
- 23. abrir libro de Excel de memorystream
- 24. Copiando rango y pegando en el nuevo libro de trabajo
- 25. ¿Cómo puedo importar datos de Excel mediante programación en una tabla de acceso?
- 26. ¿Ocultar el icono de la barra de aplicaciones mediante programación en una aplicación WP7 de Silverlight?
- 27. Función Excel VBA para imprimir una matriz en el libro
- 28. Magento, ¿cómo deshabilitar el módulo mediante programación?
- 29. Tabla en Excel desde SQL Server procedimiento almacenado con campo de parámetro en el libro de trabajo
- 30. mediante programación en C#
Tenga en cuenta que el código de Chip Pearson utiliza FindWindow para obtener el control del Editor de VB. Podría ignorar la parte FindWindow y simplemente usar la propiedad Hwnd del objeto de aplicación de su libro de trabajo como argumento para LockWindowUpdate. Lo dejé allí, así que tienes ambas alternativas. – mkingston
API "ShowWindow" es mejor, ya que no tendrá ningún efecto secundario, se compara con "ActiveWorkbook.Windows (1). Visible = Falso". En mi prueba, una vez que un libro de trabajo se guarda con ".Windows (1) .Visible = False", necesita volver a establecer Visible en True antes de poder ver los datos. – bobyuan