Generar Tablas Dinámicas con Macros

Como estas yo de nuevo con otra pregunta...
Dentro de la Tremenda macro que estoy haciendo del cual tu participas ayudándome, tengo que generar una tabla dinámica, resulta que durante el día genero varias tablas dinámicas y la macro esta editada de la siguiente manera:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Datos!R46C2:R856C22").CreatePivotTable TableDestination:="", TableName:= _
"Tabla dinámica1"
Si te fijas esta predeterminado "Tabla dinámica1", el numero de la tabla, de este modo cuando genero la macro y anteriormente ya había trabajado con una tabla dinámica, me genera error ya que no coinciden los números,
Yo soluciono el problema siempre reseteando el computador... Imagina el cacho... Tienes alguna idea de como solucionarlo.

1 Respuesta

Respuesta
1
La verdad es que tampoco he trabajado nunca con tablas dinámicas, pero debe haber una solución y es posible que entr los dos la encontremos. Hagamos lo siguiente:
Crea un libro nuevo, y en el diseña una tabla dinámica con datos ficticios, no tiene que ser muy grande, envíamela a mi correo ([email protected]), para yo ver como es que el computador asigna el nombre
Dim NombreArch As String
NombreArch = "NP " & InputBox("PROVEEDOR", "Guardar Como...CELTA (Ejemplo)") & " " & InputBox("FECHA", "Guardar Como...30-08-2004 (Ejemplo)") & " " & "VA"
If NombreArch = "" Then
Tengo dos dudas, para termninar este gran proyecto...
(Todo sobre las Tablas Dinámicas, funciono perfecto, tuve que adaptar a mi macro... pero todo bien)
1..-Respecto al ejemplo de más arriba, cuando "guardo como", lo único que tengo que agregarle un VA al final del mismo nombre del archivo, por ejemplo, NP NANA 31-04-04... lo debo "guardar como" NP NANA 31-04-04 VA... la idea es que se "guarde como ", automáticamente.
2.- Cuando en la tabla dinámica, se borra la hoja adicional... me pregunta "desea borrar esta hoja", la idea que no me pregunte en esta ocasión, "SOLO BORRE SIN PREGUNTAR"...
Gracias por tu ayuda...
Creo que encontré la solución:
En libro de prueba que me enviaste cambia todo el código del módulo por este:
Sub Tabla_Dinamica_prueba()
'
' Tabla_Dinamica_prueba Macro
' Macro grabada el 10/09/2004 por GuKo
'
'
Sheets("Electronica y Otros").Select
Sheets("Electronica y Otros").Copy After:=Sheets(1)
Sheets("Electronica y Otros (2)").Activate
Contar = ActiveWorkbook.Worksheets.Count
NombreHoja = ActiveSheet.Name
NombreTabla = "Tabla dinámica" & Contar - 1
Range("A1").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Electronica y Otros (2)'!R1C1:R2C23").CreatePivotTable TableDestination:="", _
TableName:="Tabla dinámica" & Contar - 1
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables(NombreTabla).SmallGrid = False
ActiveSheet.PivotTables(NombreTabla).AddFields RowFields:=Array( _
"Nombre Tienda", "Fecha Boleta", "Boleta"), PageFields:="Desc.Rubro"
ActiveSheet.PivotTables(NombreTabla).PivotFields("Cant").Orientation = _
xlDataField
Application.CommandBars("PivotTable").Visible = False
ActiveSheet.PivotTables(NombreTabla).PivotFields("Desc.Rubro"). _
CurrentPage = "ELECTRONICA"
Cells.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Application.DisplayAlerts = False
Cells.EntireColumn.AutoFit
Range("B9").Select
ActiveSheet.PivotTables(NombreTabla).PivotSelect _
"'Fecha Boleta'[Todas;Total] ELECTRONICA", xlDataAndLabel
Selection.Delete
Range("B12").Select
ActiveSheet.Name = NombreTabla
Sheets(NombreHoja).Select
Worksheets(NombreHoja).Delete
Worksheets(NombreTabla).Activate
Application.DisplayAlerts = True
Range("B16").Select
End Sub
Ya lo ensaye y se pueden generar n hojas.
Si tienes algún problema escribe, de lo contrario no olvides finalizar.
Trabajaré en ello.
El próximo lunes te tendré respuesta
Feliz fin de semana
Te acabo de enviar el correo...
Chao
Una idea
Dim NombreTabla as String
NombreTabla=Inputbox("Entre el nombre de la tabla")
Reemplaza "Tabla Dinámica 1" por nombre tabla.
Si no sirve entonces podrías ensayar con
For Each tabla In Hoja1.PivotTables
NombreTabla= tabla.Name
Next tabla
Si no sirve, escribe de nuevo
Es necesario que me pregunte por algún nombre, por ejemplo:
Dim NombreTabla as String
NombreTabla= "tabla 1"
De este modo, siempre cuando genere la tabla dinámica buscara el nombre ya predeterminado por mi.
Que crees tu.?
Eso hace la función inputbox
Te pregunta a que nombre quieres asociar la tabla, entonces como reemplazas en la fórmula "tabla dinámica..." por NombreTabla, el buscara la que tu le indiques.
Si no es suficiente pregunta de nuevo
Sabes, no resulta, ya que me tira error... la verdad es que no entiendo bien como funciona el nombre que se le da a la tabla dinámica.
El nombre lo predetermina el computador.
Y al utilizar el inputbox, yo le designo el nombre pero esta no me lo reconoce...
Para guardar como
Dim NomArch as String
NomArch="NP NANA 31-04-04" & "VA"
ActiveWorkbook.SaveAs("C:Ruta" & NomArch & ".Xls")
Para que no te aprezcan mensajes de alerta:
Application.DisplayAlerts=Flase
' aqui Tu codigo para borrar hoja
Application.DisplayAlertes=True
Si tienes problemas escribe, de lo contrario no olvides finalizar.
Cómo vas?
Hola respecto a los mensajes de aprobación, esta ok... Gracias
Pero al respecto de "guardar como" la idea es que el sistema considere el nombre actual del archivo y le agregue automáticamente un VA, al final., es decir, el archivo cada vez que se ejecuta la macro tiene distintos nombres, pero lo único que hay que hacer es "guardar como", con el nombre del archivo actual y agregarle un VA al final...
Ojala te hayan llegado mis otras preguntas...
Corrección:
Hola
Para guardar como
Dim NomArch As String
NomArch = ThisWorkbook.Path & "" & ThisWorkbook.Name & "VA"
ThisWorkbook. SaveAs NomArch
Si no es eso escribe de nuevo
Para guardar como
Dim NomArch As String
NomArch = ThisWorkbook.Path & "" & ThisWorkbook.Name & "VA"
ThisWorkbook. SaveAs NomArch
Si no es eso escribe de nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas