Excel - Problema en Macro con variable

 
Vista:
sin imagen de perfil

Problema en Macro con variable

Publicado por George (5 intervenciones) el 17/05/2017 20:18:34
Saludos.
Resulta que tengo una macro de la siguiente manera


1
2
3
4
5
6
7
8
Static path As String
path = Application.GetOpenFilename
Range("B7").Select
ActiveCell.FormulaR1C1 = "='[path]2013'!R33C15"
Range("D7").Select
ActiveCell.FormulaR1C1 = "='[path]2013'!R13C15"
Range("E7").Select
ActiveCell.FormulaR1C1 = "='[path]2013'!R14C15"

pero cada vez que pasa a llenar otra celda me aparece repetidamente el cuadro de dialogo
diciendo que tengo que actualizar el valor de la variable "path" definida para almacenar el nombre del fichero.
Mi pregunta es si existe alguna manera de eliminar este problema?
Gracias de antemano
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: 4.135
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problema en Macro con variable

Publicado por Antoni Masana (1515 intervenciones) el 18/05/2017 13:23:28
Este comando te da la ruta y el nombre del fichero

1
ActiveSheet.Parent.FullName

Este comando te da el nombre del fichero

1
ActiveSheet.Parent.Name

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
sin imagen de perfil

Problema en Macro con variable

Publicado por George (5 intervenciones) el 18/05/2017 14:54:00
El problema es que necesito cargar los datos de otro excel pero que su ruta puede variar y con estos solo tengo la direccion
del excel en el que estoy trabajando no asi con este

Application.GetOpenFilename
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

Problema en Macro con variable

Publicado por JuanC (1237 intervenciones) el 18/05/2017 15:06:13
no entiendo lo que querés hacer, si es usar el valor de path dentro de la cadena:

ActiveCell.FormulaR1C1 = "='[" & Path & "]2013'!R33C15"

cuidado que declaraste Path como Static...
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
sin imagen de perfil

Problema en Macro con variable

Publicado por George (5 intervenciones) el 18/05/2017 15:22:36
A ver si me explico mejor..
Lo que quiero es dentro de un libro excel cargar los datos de otro libro excel que tiene una estructura diferante al destino.
Todo funciona perfecto si pongo directo el nombre del excel del cual voy a leer los datos. Pero es un poco complicado cambiar el nombre cad vez qeu necesite leer datos y el excel origen tenga un nombre diferente.
Pero en cuanto uso una variable por cada aparicion de esta me sale un cuadro de dialogo que tengo que actualizar esa variable.
Y son varias veces que voy a usar esa varible, estuve buscando en la internet pero no encuentro nada relacionado con el tema, en verdad necesito ayuda sobre esto porque me ahorra un monton de horas de trabajo.
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: 4.135
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Problema en Macro con variable

Publicado por Antoni Masana (1515 intervenciones) el 18/05/2017 16:09:03
Haber si lo entiendo, el libro origen y que intentas buscar con el Application.GetOpenFilename tiene un nombre diferente cada vez que lo ejecutas.

Si el directorio origen SOLO tendrá un fichero o un tipo determinado, esto te puede servir. Pruebalo con la ruta correcta para ver si te funciona

1
2
3
Sub Prueba()
    MsgBox Dir("C:\Documento\*.*")
End Sub

si tiene un tipo determinado, por ejemplo con extensión .XLS seria así

1
2
3
Sub Prueba()
    MsgBox Dir("C:\Documento\*.xls*")
End Sub

Y si hay varios ficheros cada ejecución del DIR() te devolverá el siguiente fichero

1
2
3
4
5
Sub Prueba()
    MsgBox Dir("C:\Documento\*.xls*")
    MsgBox Dir()
    MsgBox Dir()
End Sub

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
sin imagen de perfil

Problema en Macro con variable

Publicado por George (5 intervenciones) el 18/05/2017 16:30:23
A ver si me explico mejor que aun no llegas a entender el tema. aqui te mando un trozo de codigo para que entiendas bien.....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
path = Application.GetOpenFilename                 //abre un cuadro de dialogo y selecciono el fichero del cual
                                                           //quiero obtener los dastos
 
pos_celda = "B" & i                                                                      //                     
Range(pos_celda).Select                                                          // Sellciona la celda de la cual quiero obtener el dato
ActiveCell.FormulaR1C1 = "='[path]2013'!R33C15"              // y se la asigno a la celda de destino
                                                                                                         // y asi sucesivamente. Pero cada vez que se usa la variable
                                                                                                         // path me abre un cuadro de dialogo para que actualice 
                                                                                                         //la misma. Y "path" se usa bastante, asi que imaginate
                                                                                                         // dar click tantas veces aparesca el dialogbox              
pos_celda = "D" & i
Range(pos_celda).Select
ActiveCell.FormulaR1C1 = "='[path]2013'!R13C15"
 
pos_celda = "E" & i
Range(pos_celda).Select
ActiveCell.FormulaR1C1 = "='[path]2013'!R14C15"




Espero que ahora me entiendas. En esta url:
https://ayudaexcel.com/foro/topic/16704-abre-muchas-veces-cuadro-de-dialogo-abrir-archivo/
parece que se habla sobre este tema pero no tengo acceso a eso, si pudieras hecharle un vistazo y me comentas me seria de mucha ayuda..
Gracias por tu tiempo.
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

Problema en Macro con variable

Publicado por JuanC (1237 intervenciones) el 18/05/2017 16:44:42
es obvio que si dejas path = Application.GetOpenFilename dentro del procedimiento, cada vez
que llames a éste se ejecutará el cuadro de diálogo
quizá deberías usar path como variable global o usar alguna variable 'flag' para saber si ya se ejecutó o no el cuadro de diálogo...
lo ideal sería que publiques el código completo...
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
sin imagen de perfil

Problema en Macro con variable

Publicado por George (5 intervenciones) el 18/05/2017 16:58:02
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Sub COPIAR_DATOS()
 
    Static path As String
    Static hoja, libro As String
    Static fila As Integer
    Static pos_celda As String
 
 
 
            path = Application.GetOpenFilename
 
            pos_celda = "B" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R33C15"
 
            pos_celda = "D" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R13C15"
 
            pos_celda = "E" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R14C15"
 
            pos_celda = "F" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R15C15"
 
            pos_celda = "G" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R18C9"
 
            pos_celda = "H" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R26C9"
 
            pos_celda = "I" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R27C9"
 
            pos_celda = "K" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R25C9"
 
            pos_celda = "L" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R20C9"
 
            pos_celda = "M" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R22C9"
 
            pos_celda = "N" & i
            Range(pos_celda).Select
            ActiveCell.FormulaR1C1 = "='[path]2013'!R21C9"
 
       ...........................
 
 
End Sub


ahi esta todo, bueno un parte porque sigue asi hasta copiar todos los datos pero al final el lo mismo.
antes las declaraciones de las variables las hacia con dim pero luego pense que con que fueran estaticas resolvia el problema pero sigue..
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

Problema en Macro con variable

Publicado por JuanC (1237 intervenciones) el 18/05/2017 19:27:44
sigo sin entender... supongo y me retiro con el siguiente código...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
 
Dim path As String
Dim i%
 
Sub test()
path = Application.GetOpenFilename
For i = 1 To 5
    Call COPIAR_DATOS
Next
End Sub
 
Sub COPIAR_DATOS()
Dim v As Variant
Dim j%
v = Array("B", "R33C15", "D", "R13C15", "E", "R14C15")
For j = 0 To UBound(v) - 1 Step 2
    Range(v(j) & i).FormulaR1C1 = "='" & path & "'!" & v(j + 1)
Next
End Sub
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