Visual Basic para Aplicaciones - Problemas con VBA de Office 2013 en Office 365

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con VBA de Office 2013 en Office 365

Publicado por Carlos (3 intervenciones) el 28/04/2020 09:36:13
Hola.

Tengo un problema con las macros que tenía creadas en Office 2013 al ejecutarlas en Office 365.

El office 365, a parte de ir lentísimo en comparación con el Office 2013.

Resultan que dan error, pero no siempre en el mismo punto, unas veces nada más empezar, otras veces casi al terminar, otras veces es capaz de terminarlas.

Casi siempre son errores al crear tablas dinámicas.

He mejorado un poco al incluir en la macro al principio el siguiente codigo:

1
2
3
4
5
6
7
8
9
10
11
screenUpdateStatus = Application.ScreenUpdating
statusBarStatus = Application.DisplayStatusBar
calcStatus = Application.Calculation
eventsStatus = Application.EnableEvents
displayPageBreakStatus = ActiveSheet.DisplayPageBreaks
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Application.DisplayAlerts = True


Tambien ha mejorado un poco mas al incluir este modulo:


1
2
3
4
5
6
7
8
9
10
11
12
13
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
 
 
 
Public Sub vaciar_portapapeles()
 
OpenClipboard 0
EmptyClipboard
CloseClipboard
 
End Sub
Pero no acaba de ir bien.

A alguien más le pasa este problema en Office 365 con macros que funcionaban a la perfección en Office 2013 ???

Muchas gracias a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas con VBA de Office 2013 en Office 365

Publicado por Antoni Masana (498 intervenciones) el 29/04/2020 13:47:45
He encontrado algún problema con macros y Tablas Dinámicas entre diferentes versiones de Excel.

Seguramente mi problema o es el que tienes pero el mio lo solucione.

Yo tengo Excel 365, puedes enviarme el fichero, lo pruebo y trato de ver porque falla.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con VBA de Office 2013 en Office 365

Publicado por Carlos (3 intervenciones) el 29/04/2020 16:03:54
Hola Antoni.

Muchas gracias por tu respuesta.

La macro de la que estoy hablando, se conecta a un origen de datos, y también abre un archivo de excel en una ubicación de red para recoleccionar los datos antes de crear las dinámicas.


Aunque te lo enviase, no te serviria de mucho para probar.

los errores que da son siempre en la creación de las tablas dinámicas (8 en diferentes hojas), aunque el error unas veces salta en un punto de la macro y otras veces ejecuta ese punto y da error en otro

Por favor, como has solucionado tu tema??

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas con VBA de Office 2013 en Office 365

Publicado por Antoni Masana (498 intervenciones) el 29/04/2020 17:31:35
Tengo un libro con datos y tablas dinámicas.
Cada día capturo datos de una tabla de la WED interna y la paso a este libro y actualiza la referencia de datos de la tabla dinámica.
Para ello uso una macro para realizar el filtrado y el copy/paste.
El problema esta en el momento de añadir las lineas nuevas a la tabla.

En la versión de Excel 2010 la opción de GRABAR MACRO me indico que lo que tenia que poner para añadir las nuevas líneas era esto:

1
2
3
4
5
6
7
ActiveSheet.PivotTables("Tabla Dinamica"). _
         ChangePivotCache _
         ActiveWorkbook. _
         PivotCaches. _
         Create(SourceType:=xlDatabase, _
         SourceData:="MMPS!R1C1:R" & (c_Dest + Lin_Dest - 2) & "C5", _
         Version:=xlPivotTableVersion14)

La pare en negrita es la que modifique para indicar la nueva área de datos.
Voy a otro ordenador con otra versión de Excel, no recuerdo cual y da error en esta linea.
Vuelvo a realizar el GRABAR MACRO en el nuevo ordenador y me genera esto:

1
2
3
4
5
6
ActiveSheet.PivotTables("Tabla Dinamica"). _
         ChangePivotCache _
         ActiveWorkbook. _
         PivotCaches. _
         Create(SourceType:=xlDatabase, _
         SourceData:="MMPS!R1C1:R" & (c_Dest + Lin_Dest - 2) & "C5")

¿Ves la diferencia?

Ami me costo un rato verlo, la ultima línea de la versión era el problema, la quite y funciono en los dos sitios.

Saludos.
\\//
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con VBA de Office 2013 en Office 365

Publicado por Carlos (3 intervenciones) el 04/05/2020 08:51:01
Hola.

La idea de quitarle la versión ha ayudado a minimizar los errores, pero no ha solucionado de todo los errores.

Pero lo he resuelto de la siguiente manera:

1. Despues de muchas pruebas, "Application.ScreenUpdating = False" al principio del modulo evita algunos errores.

2. Al principio del módulo, " Application.CutCopyMode = False", también ayuda evitar otros errores del tipo "la imagen es demasiado grande y será cortada"

3. Y por último, el error al crear varias tablas dinámicas en sus correspondientes hojas:

El código que genera la grabadora de macros, da error al generar varias tablas dinámicas seguidas, porqué?, ni idea.....

Pero lo que he hecho ha sido sustituir este código:
1
2
3
4
5
Sheets.Add.Name = "DETALLADO"
 
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"EXAL16DD!R1C1:R1847C47", Version:=6).CreatePivotTable TableDestination:= _
"DETALLADO!R3C1", TableName:="TablaDinámica1", DefaultVersion:=6

Por este otro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub prueba1()
 
    Dim td As PivotTable
    Set td = CrearTablaDinamica(ActiveWorkbook.Sheets("EXAL16DD").Range("A1:AT1847"))
	ActiveSheet.Name = "DETALLADO"
 
	' aqui se añaden los campos a la tabla dinamica, según cual sea.
 
End Sub
 
Function CrearTablaDinamica(ByRef srcData As Range) As PivotTable
 
	Dim tdPivot As PivotTable
    Dim tdSheet As Worksheet
    Dim tdCache As PivotCache
 
    Set tdCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                                                  SourceData:=srcData)
 
    Set tdSheet = ActiveWorkbook.Sheets.Add
 
    Set tdPivot = tdCache.CreatePivotTable(TableDestination:=tdSheet.Range("A3"))
    Set CrearTablaDinamica = tdPivot
 
End Function

En el primer código, primero se crea la hoja y luego la tabla dinámica se hace de "un tirón", y cuando va por la 3ª, 4ª ó 7ª hoja con su respectiva tabla dinámica, pues nada, da error.

En el segundo código (parte extraído de Googlear....), se llama a una función CrearTablaDinamica, y ésta primero crea el PivotCahe de la tabla dinámica, luego crea la hoja y por último crea la tabla dinámica. Por último renombro la hoja y y de esta manera vuelvo a llamar a la funcíon 8 veces mas (8 hojas con sus respectivas tablas dinámicas) y no me genera ningún error en Office 365.

El porqué no falla no lo sé..., pero con esto he resuelto "MI" problema con esta macro y otras macros que crean tablas dinámicas en Office 365, 2016 y 2019. Macros que funcionaban a la perfección en Office 2013.

No se si a alguien más le puede ayudar esto pero a mi me ha resuelto el problema.

Saludos y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar