Inicio > Microsoft Excel > jgirj > Generar Tablas Dinamicas con Macros

Generar Tablas Dinamicas con Macros

Experto:
Usuario:
Fecha: 15/09/2004
Valoración: (5,00 sobre 5) Categoría: Microsoft Excel
09/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
Hola Amigo...Como estas yo de nuevo con otra pregunta...

Dentro de la Tremenda macro que estoy haciendo del cual tu participas ayudandome, tengo que generar una tabla dinamica, resulta que durante el dia genero varias tablas dinamicas 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 habia trabajado con una tabla dinamica, me genera error ya que no coinciden los numeros,
yo soluciono el problema siempre reseteando el computador....imagina el cacho.....tienes alguna idea de como solucionarlo.
Gracias
09/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
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 podrias ensayar con
For Each tabla In Hoja1.PivotTables
NombreTabla= tabla.Name
Next tabla

Si no sirve, escribe de nuevo
09/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
es necesario que me pregunte por algun nombre, por ejemplo:

Dim NombreTabla as String

NombreTabla= "tabla 1"


de este modo, siempre cuando genere la tabla dinamica buscara el nombre ya predeterminado por mi.

que crees tu.?????
09/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
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

Saludos
09/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
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 dinamica.
el nombre lo predetermina el computador.
y al utilizar el inputbox, yo le designo el nombre pero esta no me lo reconoce.......
10/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Hola.

La verdad es que tampoco he trabajado nunca con tabalas 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 (Jgirj7@yahoo.com), para yo ver como es que el computador asigna el nombre

Espero tu correo
10/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
te acabo de enviar el correo.....
chao
10/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Hola, creo que encontre 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 algun problema escribe, de lo contrario no olvides finalizar.

Saludos
10/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
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 Dinamicas, funciono perfecto, tuve que adaptar a mi macro...pero todo bien)

1..-respecto al ejemplo de mas arriba, cuando "guardo como", lo unico 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 ", automaticamente.

2.- Cuando en la tabla dinamica, se borra la hoja adicional....me pregunta "desea borrar esta hoja", la idea que no me pregunte en esta ocasion, "SOLO BORRE SIN PREGUNTAR"...

Gracias por tu ayuda....
10/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Trabajaré en ello.


El proximo lunes te tendré respuesta

Feliz fin de semana

Saludos
13/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Hola

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.

Saludos
14/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Hola, Como vas?
14/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
Hola respecto a los mensajes de aprobacion, esta ok...Gracias
pero al respecto de "guardar como" la idea es que el sistema considere el nombre actual del archivo y le agregue automaticamente un VA, al final., es decir, el archivo cada vez que se ejecuta la macro tiene distintos nombres, pero lo unico que hay que hacer es "guardar como", con el nombre del archivo actual y agregarle un VA al final...
15/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
Hola

Para guardar como

Dim NomArch As String
NomArch = ThisWorkbook.Path & "" & ThisWorkbook.Name & "VA"
ThisWorkbook.SaveAs NomArch

Si no es eso escribe de nuevo
15/09/2004
guko, experto respondiendo en Microsoft Excel
Experto
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
15/09/2004
guko, usuario preguntando en Microsoft Excel
Usuario
Ojala te hayan llegado mis otras preguntas....
Enlaces patrocinados