inhabilita opciones

22/09/2004 - 02:36 por ayuda | Informe spam
Tengo un libro compartido el cual ejecuta una serie de
macros, mi problema radica en que al momento de importar
datos desde un archivo el codigo que lo hace no puede ser
ejecutado por la caracteristica que mencione (libro
compartido), exister alguna forma para que al compartir
libros no me inhabilite ninguna opción o menú, espero
contar con su ayuda

Preguntas similare

Leer las respuestas

#6 gilro
28/09/2004 - 04:30 | Informe spam
Gracias Hector Funciona perfectamente


hola, Gil !

El codigo con el cual hago la extraccion de datos es el




siguiente:
With ActiveSheet.QueryTables.Add(Connection:= _




[... sigue ejemplo del codigo ...]
... una cuantificacion en <a




href="http://www.ntsearch.com/search.php?
q=autocad&vV">autocad</a> ... tengo que realizar un
presupuesto de obra
... lo debo tener en red y compartido pero tengo el




problema ya mencionado.

=> puedes 'aprovechar' el que las macros 'generadas'


ANTES de compartir el libro... ->son 'operables'<-
-> siempre y cuando... NO 'traten de hacer uso' de


las carcteristicas 'prohibidas' para ellos <-
[como el 'crear/refrescar' tablas de datos


externos] :(
en lugar de un 'QueryTables.Add'... te expongo un


ejemplo 'probado', considerando que...
no esta 'prohibido'... 'tomar para lectura' el


archivo 'de origen' y 'vaciar' sus datos en el libro
compartido ;)

... es posible cargar en una variable la ubicacion de




una celda - ... ya la obtuve con .Address -
y utilizar esta variable para ponerla en la




opcion .Destination:=Range("A1")
es decir en lugar de poner Range("A1"), poner la




variable que declare?

=> [aunque ya no sera 'necesario' modificar la tabla] :))
en la expresion Range("A1"), puedes sustituir la


referencia al rango [A1] por cualquier variable ->de
texto<-
[siempre y cuando, el 'resultado' de dicha


variable 'permita' que sea 'interpretada' como una
direccion de celda/s]
[como es el caso en que 'la tomas' de la


propiedad 'Address']

el codigo que estoy utilizando para tal efecto es el




siguiente:
With ActiveCell
Dim c As Range
set c = .Address(xlA1) [... sigue el ejemplo de




codigo ...]
pero me manda error



=> el error 'se origina' debido a que...
1° 'declaras' la variable como de tipo 'Range' [Dim


c As Range]
2° cuando lo 'estableces' [con la


instruccion 'Set']... lo 'cambias' a un tipo 'String'
[= .Address]
[de ahi en adelante... cualquier cosa puede fallar,


puesto que 'el tipo' ya no 'coincide'] :((

el codigo propuesto, a continuacion. si cualquier duda...


¿comentas?
saludos,
hector.
en un modulo de codigo 'normal' ==>Sub TraerDatosCAD()
Dim Archivo As String, Celda1 As String, Datos As Byte,


_
Entrada As String, Fila As Long, Cols As Byte,


<a href="http://www.ntsearch.com/search.php?
q=Pos&vV">Pos</a> As Integer, Col As Byte, Dato()
Archivo = "e:\ext\vb\are_pis.txt"
Celda1 = "a1"
Range(Celda1).CurrentRegion.ClearContents
Datos = FreeFile
Open Archivo For Input As #Datos
Do While Not EOF(Datos)
Line Input #Datos, Entrada
Cols = Len(Entrada) - Len(Application.Substitute


(Entrada, ",", ""))
If Cols > 0 Then
ReDim Dato(Cols)
Dato(0) = InStr(Entrada, ",")
For <a href="http://www.ntsearch.com/search.php?


q=Pos&vV">Pos</a> = 1 To Cols - 1
Dato(Pos) = InStr(Dato(Pos - 1) + 1, Entrada, ",")
Next
Range(Celda1).Offset(Fila) = Left(Entrada, Dato(0) -


1)
For Col = 1 To Cols
If Col = Cols Then Range(Celda1).Offset(Fila,


Col) = Mid(Entrada, Dato(Col - 1) + 1) _
Else Range(Celda1).Offset(Fila, Col) = Mid


(Entrada, Dato(Col - 1) + 1, Dato(Col) - Dato(Col - 1) - 1)
Next
Else: Range(Celda1).Offset(Fila) = Entrada
End If
Fila = Fila + 1
Loop
Close #Datos
End Sub

.

Respuesta Responder a este mensaje
#7 Héctor Miguel
28/09/2004 - 06:09 | Informe spam
hola, Gil !

... Funciona perfectamente



[gracias por el 'feed-back'] ;)

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida