Foros del Web » Soporte técnico » Ofimática »

FAQ`s Ofimatica

Estas en el tema de FAQ`s Ofimatica en el foro de Ofimática en Foros del Web. Tengo mas voluntad que conocimiento, asi que me limite a adaptar al formato FAQ un post que me sirvio y que me parecio muy completo ...
  #1 (permalink)  
Antiguo 13/09/2007, 09:43
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
FAQ`s Ofimatica

Tengo mas voluntad que conocimiento, asi que me limite a adaptar al formato FAQ un post que me sirvio y que me parecio muy completo (autores abrahamvj, 3pies y landa59)


Macro con la Función Edición/Buscar:

Simplificada

Sub búsqueda()
Cell.Find(What:=”palabra”).Activate
End sub

.. y extendida

Sub busqueda()
Cell.Find(What:="hola", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
End sub

Variantes:
  • Utilizando Textbox para ingresar el campo a buscar:
Sub busqueda()
Cell.Find(What:=textbox1).Activate
End sub
  • Restringiendo el campo de búsqueda a una columna/fila/rango
Reemplazando Cells (toda la hoja) por:
[B:B] (toda la columna B)
[3:3] (toda la fila 3)
Range("A2:B99") (el rango especificado).

  • Con mensaje de Alerta
Sub Macro1()

On Error GoTo lineaerror

Cells.Find(What:="hola", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate

Exit Sub

lineaerror:
MsgBox "Error"

End Sub
__________________
-- Nunca te des por vencido, aún vencido -- Web

Última edición por BrujoNic; 25/09/2007 a las 08:31
  #2 (permalink)  
Antiguo 25/09/2007, 21:30
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: FAQ`s Ofimatica

Tutorial: Cómo mostrar una barra de progreso con un formulario de usuario en Excel

Si tiene una macro de Microsoft Visual Basic para Aplicaciones que toma mucho tiempo terminando, quizás desea dar una indicación que la macro progresa correctamente al usuario. En este artículo se describe cómo crear una barra de progreso con un formulario de usuario en Microsoft Excel.

Más información

Microsoft proporciona ejemplos de la programación sólo para ilustración sin garantía que se expresa o implícito. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado Este artículo presupone que está familiarizado por usted con el lenguaje de programación que se muestra y las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento determinado. Sin embargo, ellos no modificarán estos ejemplos para proporcionar que agregó funcionalidad o construir procedimientos para cumplir sus necesidades específicas.


Cree el formulario de usuario

En el ejemplo siguiente, una subrutina de Visual Basic rellena rango de celdas grandes con un número aleatorio. El indicador le muestra que la macro se ejecuta correctamente.

1.Abra un libro nuevo en Excel.

2.En Microsoft Office Excel 2003 y versiones anteriores de Excel, haga clic en Herramientas, elija Macro y a continuación, haga clic en Editor de Visual Basic.

En Microsoft Office Excel 2007, haga clic en Visual Basic en el grupo Código en la ficha Programador.

Nota Para mostrar la ficha Programador en la Cinta, siga estos pasos:
a. Start Excel 2007 hace clic en el Microsoft Office Button y a continuación, hace clic en Opciones de Excel.
b. En el cuadro de diálogo Opciones de Excel, haga clic en Popular y a continuación, haga clic para activar la casilla de verificación Show Developer tab in the Ribbon.

3.En el menú <B>Insertar</B>, haga clic en <B>UserForm</B>
4.Dibuje un control Label en el formulario de usuario.
5.Cambie las propiedades siguientes del control Label en los valores siguientes:

Property Value
--------------------------------------------
Caption Now updating. Please wait...

Nota Si la ventana Propiedades no es visible, haga clic en Ventana Propiedades en el menú Ver.

6.Dibuje un control Frame en el formulario de usuario.
7.Cambie las propiedades siguientes del control Frame en los valores siguientes:

Property Value
-----------------------------
Name FrameProgress


8.Dibuje un control Label en el control Frame.
9.Cambie las propiedades siguientes del control Label en los valores siguientes:

Property Value
-------------------------------------
Name LabelProgress
BackColor &H000000FF&
SpecialEffect fmSpecialEffectRaised



Escriba el código de macro

1.Haga doble clic en el formulario de usuario para abrir la ventana Código para el formulario de usuario.
2.En el módulo, escriba el código siguiente para el evento UserForm Activate:

Private Sub UserForm_Activate()
' Set the width of the progress bar to 0.
UserForm1.LabelProgress.Width = 0

' Call the main subroutine.
Call Main
End Sub




3.En el menú Insertar, haga clic en Módulo.
4.En la ventana Código para el módulo, escriba el código siguiente:

Sub ShowUserForm()
UserForm1.Show
End Sub

Sub Main()
Dim Counter As Integer
Dim RowMax As Integer, ColMax As Integer
Dim r As Integer, c As Integer
Dim PctDone As Single

Application.ScreenUpdating = False
' Initialize variables.
Counter = 1
RowMax = 100
ColMax = 25

' Loop through cells.
For r = 1 To RowMax
For c = 1 To ColMax
'Put a random number in a cell
Cells(r, c) = Int(Rnd * 1000)
Counter = Counter + 1
Next c

' Update the percentage completed.
PctDone = Counter / (RowMax * ColMax)

' Call subroutine that updates the progress bar.
UpdateProgressBar PctDone
Next r
' The task is finished, so unload the UserForm.
Unload UserForm1
End Sub

Sub UpdateProgressBar(PctDone As Single)
With UserForm1

' Update the Caption property of the Frame control.
.FrameProgress.Caption = Format(PctDone, "0%")

' Widen the Label control.
.LabelProgress.Width = PctDone * _
(.FrameProgress.Width - 10)
End With

' The DoEvents allows the UserForm to update.
DoEvents
End Sub


5.Vuelva a Excel.
6.En Excel 2003 y versiones anteriores de Excel, elija Macro en el menú Herramientas y a continuación, haga clic en Macros.

En Excel 2007, haga clic en Macros en el grupo Código en la ficha Programador.

7.En el cuadro de diálogo Macro, haga clic para seleccionar ShowUserForm y a continuación, haga clic en Ejecutar.
Un cuadro de diálogo que tiene una barra de progreso roja aparece. La barra de progreso aumenta como la subrutina Main rellena las celdas de la hoja de cálculo.

La subrutina ShowUserForm muestra el formulario de usuario. El procedimiento que se asocia al evento Activate del formulario de usuario llama a la subrutina Main. La subrutina Main rellena celdas con números aleatorios. La subrutina además llama a la subrutina UpdateProgressBar que actualiza el control Label del formulario de usuario.

http://support.microsoft.com/kb/211736/es
__________________
-- Nunca te des por vencido, aún vencido -- Web

Última edición por Pablus00; 25/09/2007 a las 21:37
  #3 (permalink)  
Antiguo 25/09/2007, 21:45
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: FAQ`s Ofimatica

- Como evitar visualizar el proceso de una Macro?
(Beneficio: agiliza la velocidad de ejecución)

Colocar al principio de la macro:
Application.ScreenUpdating=false

y al final:
Application.ScreenUpdating=true


(Si alguien tiene voluntad para postear, sera bienvenido, asi armamos una biblioteca de recursos que nos sirva a todos, y evitamos preguntas repetidas)
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #4 (permalink)  
Antiguo 12/12/2007, 16:31
 
Fecha de Ingreso: diciembre-2007
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Macro para crear Barra de Herramientas en el Menu

El siguiente procedimiento crea una barra de herramientas en el menu principal

Sub Crear Barra()


'Declaración de variables Dim'
Dim cMenu1 As CommandBarControl
Dim cbMainMenuBar As CommandBar
Dim iHelpMenu As Integer
Dim cbcCutomMenu As CommandBarControl

'BORRAR YA EXISTENTE
'Aqui se borra la barra de herramientas en caso que ya exista una con el nombre
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("&Nombre Barra").Delete
On Error GoTo 0
Set cbMainMenuBar = _
Application.CommandBars("Worksheet Menu Bar")

'CREAR NUEVO MENU'
Set cbcCutomMenu = _
cbMainMenuBar.Controls.Add(Type:=msoControlPopup, _
Before:=10)
cbcCutomMenu.Caption = "&Nombre Barra"

'AGREGAR BOTONES DENTRO DEL MENU
'Boton de sub menu
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Sub Menu"
.OnAction = "MacroAsociada"
End With

End Sub

Este procedimiento se puede crear cuando automaticamente se abra el acrhivo y borrar la barra apenas se cierre para que no aparezca en otros archivos mediante el sigueinte metodo:

Sub Auto_Open()
Application.Run ("Macro222")
end sub

'y

Sub Auto_Close()
On Error Resume Next
Application.CommandBars("Worksheet Menu Bar").Controls("&Reportes e Indicadores").Delete
On Error GoTo 0

End Sub

Cualquier duda por favor avisen
  #5 (permalink)  
Antiguo 17/12/2007, 04:57
Avatar de milolo  
Fecha de Ingreso: mayo-2007
Ubicación: Huelva. España
Mensajes: 63
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: FAQ`s Ofimatica

Os pongo a continuación un muy buen manual para los que estén empezando a programar con VB en excell. Ahí lo llevais:

http://www.sicem.biz/docs/tutoriales...l.PDF/download

Un saludo
  #6 (permalink)  
Antiguo 23/01/2009, 15:24
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Definicion y Tips para la programacion 1

1- Conceptos básicos-Definiciones:
MACRO: Una macro es un conjunto de instrucciones escritas en lenguaje Visual Basic, que nos permite automatizar ciertas tareas, que la aplicación no lo contempla. Por ejemplo, si queremos que al abrir un libro automáticamente inserte 2 hojas nuevas, recurriremos a una macro.


Las macros se pueden "grabar" o "escribir" en el Editor de Visual Basic.
  1. Para "grabar" una tarea rutinaria, vamos al menú Herramientas/Macro/Grabar nueva macro. Seleccionar el libro activo y asignarle un nombre. Con el botón Opciones, se podrá asignar un atajo de teclado, para poder ejecutarla con una combinación de teclas.
Acción: En la Hoja1, introducimos un título en la celda A1, le damos formato Negrita, Cursiva, Subrayado, Color de fuente y la combinamos con las 4 celdas siguientes. Detengamos la grabación.
Vamos a la Hoja2, al menú Herramientas/Macro/Macros. Seleccionamos la que acabamos de grabar y hacemos clic en el botón Ejecutar. Si le hemos asignado un atajo de teclado, solamente presionamos las teclas necesarias.
Listo: ya tenemos el título con todo el formato sin necesidad de repetir todos los pasos.
  1. Para "escribir" una macro, presionamos las teclas Alt+F11 para abrir el Editor de Visual Basic, o vamos por el menú Herramientas/Macro/Editor de Visual Basic.

¿Dónde colocar una macro? Dependerá de cual será su uso y para eso seleccionaremos alguno de los objetos que se encuentran en el margen izquierdo: Hoja1, ThisWorkBook, Módulos.
  1. Si tiene que ver con el libro abierto o activo, como por ejemplo, si queremos que se ejecute al abrir el libro, haremos doble clic sobre ThisWorkbook. Seleccionar el objeto (en General) que será WorkBook y algún procedimiento (en Declaraciones) que puede ser: Open, Close, WindowActivate, etc. Las instrucciones las escribimos o copiamos entre Private Sub y End Sub.
  2. Si se ejecutará cuando tengamos una hoja abierta, por ejemplo que la limpie o borre su contenido, haremos doble clic sobre Hoja1 o el número que sea. Seleccionamos el objeto que será WorkSheet y algún procedimiento como Activate, Change, SelectionChange, etc.
  3. Si queremos que la macro se ejecute en cualquier hoja, por ejemplo: ordenar columnas, copiar rangos, dar formatos, limpiar un rango, etc. la colocaremos en un módulo. Para eso ir al menú Insertar/Módulo del Editor. Luego doble clic sobre él. Aquí no seleccionamos ni objeto ni procedimiento sino que escribimos o copiamos toda la rutina, como el siguiente ejemplo:
Sub Borraceldas ( )
Range("A5:C20").Select
Selection.ClearContents
End Sub
En este caso se la llamará desde el menú Herramientas o se optará por asignar un atajo de teclado, para ser ejecutada desde cualquier hoja.
WORKBOOK: libro de trabajo. La expresión ActiveWorkbook hace mención al libro activo, en caso de haber más de uno abierto
SHEET: hoja de cálculo. Se utilizan también las siguientes expresiones: Worksheet, ActiveSheet (en este caso se hace referencia a la hoja activa)
RANGE: hace referencia al rango o conjunto de celdas a las que se aplicará una acción. Existen distintas maneras de mencionar un rango de celdas: Range("A4:C8"), Range(variable), Range("A:A;D:D"), Selection CELL: hace referencia a la celda. Se pueden utilizar expresiones como Cells(2,5), Cells(fila,col), ActiveCell, Selection
Hecho el repaso, a continuación verán las principales instrucciones, que ya sabrán dónde colocarlas. Si alguna rutina les presenta dificultad, pueden enviarme un mail con los comentarios al respecto.

2- Instrucciones básicas:
Trabajando con Libros:
1-Abrir un segundo libro:
Application.Workbooks.Open "C:\Mis docu\Libro1.xls" o Workbooks.Open "C:\....."
2-Activar un segundo libro:
Workbooks("Libro2.xls").Worksheets("Hoja3").Activa te o Workbooks(2).Sheets(3).Activate

3-Cerrar un libro (sin guardar):
Workbooks("Libro1.xls").Close False o ActiveWorkbook.Close False

4-Cerrar un libro (guardando los cambios):
ActiveWorkbook.Save

ActiveWorkbook.Close
5-Guardar un libro con otro nombre:
ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro1.xls", FileFormat:=xlNormal, Password:="clave", ReadOnlyRecommended:=False
Estas son algunas de las opciones. Si se omiten, escribir la coma.
Ejemplo:
ActiveWorkbook.SaveAs Filename:="C:\Mis doc\Libro.xls",,, ReadOnlyRecommended:=False
6-Guardar un libro cuyo nombre será el valor de una variable:
ActiveWorkbook.SaveAs Filename:=Range("A2").Value
7-Para no mostrar aviso al salir, o al eliminar una hoja, o cualquier aviso que queremos obviar:
Application.DisplayAlerts= False 'volverla a True al finalizar la macro
8-Deshabilitar la opción de actualizar vínculos al abrir un libro:
Application.DisplayAlerts= False 'volverla a True al finalizar la macro
WorkBooks.Open Filename:= "C:\Mis docu\pruebas.xls", UpdateLinks:= 0
9-Para no mostrar la ejecución de la macro:
Application.ScreenUpdating = False 'volverla a True al finalizar la macro
10-Ejecutar una macro al abrir un libro:
Crear una rutina pública o insertar una rutina en un módulo:

Ejemplo: Sub Nuevamacro ()
'instrucciones
End Sub

Y en el evento Open del objeto ThisWorkbook: Private Sub Workbook_Open ()
Nuevamacro
End Sub


__________________
-- Nunca te des por vencido, aún vencido -- Web
  #7 (permalink)  
Antiguo 23/01/2009, 15:27
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Definicion y Tips para la programacion 2

Trabajando con Hojas:
1- Activar o seleccionar otras hojas:
Sheets("Hoja2").Activate o Sheets(2).Select
2-Seleccionar la hoja anterior o siguiente:
ActiveSheet.Previous.Select 'hoja anterior a la activa
ActiveSheet.Next.Select 'hoja posterior a la activa
3-Datos de la hoja:
ActiveSheet.Name 'nombre de la hoja
ActiveSheet.Index 'número de hoja
4-Copiar datos de una hoja a otra:
Selection.Copy 'previamente se habrá seleccionado algo
ActiveSheet.Paste Destination:=ActiveSheet.Next.Cells(1,4)
Application.CutCopyMode= False
5- Ocultar filas o columnas:
ActiveCell.EntireRow.Hidden=True o ActiveCell.EntireColumn.Hidden= True
6-Proteger o desproteger una hoja:
ActiveSheet.Protect "contraseña" 'proteger con contraseña
ActiveSheet.Unprotect "contraseña" 'quitar la protección
7-Insertar filas o columnas:
Workbooks("Libro1").Sheets("Hoja2").Column(i).Sele ct
Selection.EntireColumn.Insert
'reemplazar Column por Row en caso de filas.
8-Eliminar filas o columnas:
ActiveSheet.Row(n).Select
Selection.EntireRow.Delete
9-Insertar una imagen en una hoja:
ActiveSheet.Pictures.Insert(ruta).Select 'la ruta entre comillas: "C:\Mis docu\Foto1.jpg"
10-Imprimir la hoja seleccionada:
ActiveWindow.SelectedSheet.PrintOut Copies:=1, Collate:=True



Trabajando con celdas:
1- Formas de seleccionar una celda o un rango de celdas:
Range("B7").Select 'selecciona la celda B7
Range("B:B").Select 'selecciona toda la columna B
Range("A4:A10, D10, B5:B20").Select 'selecciona rangos discontinuos
Range("A"&variable).Select 'selecciona la celda cuya fila será el valor de la variable
Si Rango=("B2"&":E"&variable)
entonces: Range(rango).Select 'selecciona el rango B2:E hasta la fila indicada en la variable
Range("A:A, D:F").Select 'selecciona las columnas A, D, E y F
Range("2:2, 4:7").Select 'selecciona las filas 2 y desde 4 hasta la 7.
2- Seleccionar celdas a cierta distancia de la celda activa:
Sheets(1).Range("A1").Offset(2,3).Select 'selecciona la celda D3
ActiveCell.Offset(-10,1).Select 'selecciona la celda que se encuentra 10 filas por encima
'y 1 columna a la derecha de la celda activa.

3- Formato de celdas:
Range("B2:D10").Select
With Selection
.Font.Bold=True 'formato negrita
.Font.Italic=True 'formato cursiva
.Font.Underline=xlUnderlineStyleSingle 'subrayado simple
.Font.Color = RGB(255,0,0) 'color de fuente (para estos valores será rojo)
.HorizontalAlignment=xlCenter 'alineación central (Right=derecha, Left=izquierda)
End With
4- Guardar la dirección de una celda en una variable:
lugar= ActiveCell.Address 'guarda la referencia absoluta
lugar= ActiveCell.Address(False, False) 'guarda la referencia relativa
5- Copiar un comentario en otra celda:
ActiveCell.Offset(0,1).Value = ActiveCell.Comment.Text
'copia el comentario de la celda activa en la celda que se encuentra en la
'columna siguiente.

6-Seleccionar celdas y borrarlas:
Range(rango). Select o Cells.Select
Selection.ClearContents
7- Ampliar un rango seleccionado
Selection.Resize(10,4).Select ' (10 filas, 4 columnas)
' si el rango seleccionado fue A1:B5 ahora será: A1:D10
8- Combinar celdas selecccionadas:
Range("B1:E1").Select
Selection.Merge
9- Seleccionar el rango donde se encuenra la celda activa:
Range("B2").CurrentRegion.Select
10- Seleccionar hasta la última celda no vacía:
Range("A2", Range("A2").End(xlDown)).Select 'seleciona desde A2 hacia abajo
Range("A2", Range("A2").End(xlToRight)).Select 'selecciona desde A2 hacia la derecha
Range("D2", Range("D2").End(xlToLeft)).Select 'selecciona desde D2 hacia la izquierda
Range("A20", Range("A20").End(xlUp)).Select 'selecciona desde A20 hacia arriba
En cambio, para seleccionar solo la última celda con datos será:
Range("A2").End(xlDown).Select
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #8 (permalink)  
Antiguo 23/01/2009, 15:28
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Definicion y Tips para la programacion 3

Trabajando con una colección:
introducir un nombre para cada hoja del libro activo:
Dim MiNombre as String
Dim hoja as Worksheet
For Each hoja in Worksheets
MiNombre = InputBox("Ingrese nombre de hoja: ")
next hoja
Ejemplo2: introducir valores para cada celda de un rango
Dim celdita as Range
For Each celdita in ActiveSheet.Range("A1:B10")
celdita.Value = InputBox("Ingrese valor: ")
next celdita
Ejemplo3: introducir los mismos valores en celdas de todas las hojas
Dim hoja as Sheets
For Each hoja in Sheets
hoja.Range("E3").Value = Date
hoja.Range("F3").Value = Time
next hoja
Trabajando con objetos:
(En cada punto encontrarán varios ejemplos. Ver otras rutinas en Macros)
1- Llamando a un Userform, desde un botón:
En una hoja de Excel, los botones que lanzan una acción, pueden ser colocados con la barra de Formularios o Cuadro de Controles.
  • Botón de formulario: se asigna una macro que previamente se escribió en un módulo en el Editor de Visual Basic. Ejemplo:
Sub mostrando ()
UserForm1.Show 'nombre del Userform que se desea mostrar en la hoja
End Sub
  • Botón del Cuadro de controles: una vez dibujado en la hoja, clic derecho, Ver código y escribir la rutina (ésta se habilita en la hoja donde aparecerá el control). Ejemplo:
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

2- Asignando valores a los Cuadros de texto:
Ejemplos de cómo registrar datos en los textbox:
TextBox1.Value = "CANCELADO"
TextBox2 = Sheets("Hoja3").Range("A5").Value
TextBox2 = Range("C1").Value + Range("C2").Value

3- Volcar datos de un UserForm a la hoja:
Cells(fila, col).Value = TextBox1.Value

Sheets("Hoja1").Cells(fila, col).Offset(1, 0).Value = TextBox2.Value

4- Cargar datos a un ListBox de un UserForm:
Private Sub UserForm_Activate()
Dim item As Variant
For Each item In Range("F1:F6")
ListBox1.AddItem item.Value
Next item
End Sub

__________________
-- Nunca te des por vencido, aún vencido -- Web
  #9 (permalink)  
Antiguo 26/05/2010, 08:44
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Bloquear Btn Cerrar (X) de un Form Excel

Hola colegas, luego de mucho buscar encontre un codigo que oculta el boton cerrar (X) de un form, solamente peguen el codigo dentro del formulario:


Private Const MF_BYPOSITION = &H400
Private Const MF_REMOVE = &H1000
'API Functions that need to be called to Disable the Close Button on the Form
Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetMenuItemCount Lib "user32" (ByVal hMenu As Long) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private hWnd As Long

Private Sub UserForm_Initialize()
Dim hMenu As Long
Dim menuItemCount As Long
'Get the handle of the User Form
'This is used because there is no property present in the UserForm that gives the HWND
hWnd = FindWindow(vbNullString, Me.Caption)
'Get the Handle of the Menu
hMenu = GetSystemMenu(hWnd, 0)
If hMenu Then
'Get the Number of Items present in the Menu
menuItemCount = GetMenuItemCount(hMenu)
'Remove the system menu Close menu item.
'The menu item is 0-based, so the last
'item on the menu is menuItemCount - 1
Call RemoveMenu(hMenu, menuItemCount - 1, MF_REMOVE Or MF_BYPOSITION)
'Remove the Separator line from the Menu
Call RemoveMenu(hMenu, menuItemCount - 2, MF_REMOVE Or MF_BYPOSITION)
'Redraw the menu, this will refresh the Title Bar and disable the X button
Call DrawMenuBar(hWnd)
End If
End Sub
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #10 (permalink)  
Antiguo 26/07/2010, 18:04
 
Fecha de Ingreso: julio-2010
Mensajes: 9
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: FAQ`s Ofimatica

NO DEJAR QUE CIERRE EL FORM CON LA "X" DEL FORM

DOBLE CLIC EN EL FORMULARIO Y SELECCIONAR EL EVENTO "QueryClose" PARA ESCRIBIR LO SIGUIENTE

If CloseMode = 0 Then
MENSAJE = MsgBox("HACER CLIC EN SALIR")
Cancel = 1
End If
  #11 (permalink)  
Antiguo 15/08/2010, 17:23
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Para hacer tu Excel + profesional: Ocultar todas las barras y mas

¿Cómo debo hacer para desactivar una barra de comandos

Esta línea de código se desactiva la barra de menús hoja de cálculo
Application.CommandBars ("Barra de Menú hoja de cálculo"). Enabled = False

Esta línea de código se desactiva la barra de herramientas
Application.CommandBars ("Standard"). Enabled = False

Esta línea de código se deshabilita el menú de la célula (menú al hacer clic derecho en una célula)
Application.CommandBars ("Cell"). Enabled = False

Importante: siempre debe utilizar el nombre Inglés de la barra de comandos en el código.
Si utiliza el nombre local de la barra de comandos no funciona.

Si usted no sabe el nombre de Inglés para una barra de comandos se puede ejecutar esta macro.
Se agregará una nueva hoja de su libro con una lista de todos los nombres (Inglés y local).
------------------------

Para ocultar todas las barras del excel:

Sub Disable_Command_Bars_1()
'This will disable all Command bars
Dim Cbar As CommandBar
For Each Cbar In Application.CommandBars
Cbar.Enabled = False
Next
End Sub

----------------------------------

Ocultar la Barra de Status, y de formula:

Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False


__________________
-- Nunca te des por vencido, aún vencido -- Web
  #12 (permalink)  
Antiguo 18/08/2010, 13:44
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Excel: Metodo OnKey (combinacion de teclas)

Uso del metodo Application.OnKey para bloquear combinaciones de teclas no deseadas como: Alt+f11 / Alt+F8 / Crtl+C / etc

Ej: Ctrl+P
Application.OnKey "^{P}", "" (no muestra el form para imprimir)
Application.OnKey "^{P}" (vuelve al estado anterior)

---------------------------------------------------

TABLA DE REFERENCIAS:
SHIFT "+"
CTRL "^"
ALT "%"
Backspace {Backspace}, {BS}, {BKSP}
Break {Break}
Caps Lock {CapsLock}
Delete {Delete}, {Del}
Down Arrow {Down}
End {End}
Enter {Enter}, ~
Escape {Esc}
Help {Help}
Home {Home}
Insert {Insert}, {Ins}
Left Arrow {Left}
Num Lock {NumLock}
Page Down {Pgdn}
Page Up {Pgup}
Print Screen {PrtSc}
Right Arrow {Right}
Scroll Lock {ScrollLock}
Tab {Tab}
Up Arrow {Up}
F1 - F16 {F1} .. {F16}

__________________
-- Nunca te des por vencido, aún vencido -- Web
  #13 (permalink)  
Antiguo 16/10/2010, 16:20
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Información Insertar un Grafico en un Userform (Chartspace)

Si necesitan Colocar un grafico en un formulario una alternativa es usa el componente OWC Chartspace, se puede agregar simplemente desde las referencias del VBA como "Microsoft Office Web Component x.x"

Se puede configurar previamente o lo mas interesante, es hacerlo en tiempo de ejecucion, que permitira modificarlo a gusto e incluirlo en parte de cualquier rutina.

Admite datos para graficar desde excel, de otro componente simil hoja de calculo (spreadsheet) de access o tmb se puede importar por sql a cualquier bd

Hay poca informacion sobre como configurarlo bien a gusto, asi que les paso un link que me facilito mucho el trabajo:

http://msdn.microsoft.com/en-us/libr...ffice.10).aspx
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #14 (permalink)  
Antiguo 10/02/2011, 17:15
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Respuesta: FAQ`s Ofimatica

Si tuviste problemas con FileCopy o SaveCopyas en tus macros, el siguiente codigo te resuelve el problema, copia el mismo documento xls o archivos externos sin importar si estan en uso o no (x ej para hacer un backup de tu base de datos access)

Si existe un archivo de destino con el mismo nombre, lo reemplaza por la nueva copia, ideal Backups


Sub Copiar_Archivo()
On Error GoTo NoCopia
Ejemplo con un archivo externo, cambiar la ruta indicada:
origen = ThisWorkbook.Path & "\" & "Base_Datos.mdb"

'En mi caso, tengo mi base de datos en la misma carpeta que el archivo de excel que estoy ejecutando

'Ahora el destino

destino = "C:\backup.mdb"

'Esta ruta la puedes cambiar poniendo un DirListBox y un DriveListBox, eso lo dejo a tu imaginacion
'Ahora como copiar el archivo

Set fs = CreateObject("Scripting.FileSystemObject")
fs.copyfile origen, destino
MsgBox "La copia se realizó con exito", vbInformation, "Copia realizada"

Exit Sub

NoCopia:
If Err.Number > 0 Then
MsgBox Err.Number & " " & Err.Description, , "Error al copiar archivo"
Screen.MousePointer = vbDefault

Err.Clear
Exit Sub
End If

End Sub
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #15 (permalink)  
Antiguo 02/03/2011, 08:55
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Compactar BD Access desde Excel con ADO

  1. En el IDE de Visual Basic, en el menú proyecto , haga clic en referencias .
  2. Agregar Microsoft Jet y biblioteca Replication Objects X.X , donde (X.X es mayor o igual a la 2.1).
  3. Agregue las siguientes líneas de código para Visual Basic, reemplazar las rutas de base de datos de origen y destino de datos si es necesario:
Código:
Dim jro As jro.JetEngine
Set jro = New jro.JetEngine
jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\nwind2.mdb;Jet OLEDB:Database Password=test", _ 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\abbc2.mdb;Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=test"

Nota: El tipo de OLEDB:Engine Jet = 4 es sólo para los archivos MDB de Jet 3.x formato. Si este valor se deja, la base de datos se actualiza automáticamente a la versión 4.0 (Jet OLEDB:Engine tipo = 5). Consulte la tabla siguiente para los valores adecuados para Jet OLEDB:Engine tipo:

Contraer esta tablaAmpliar esta tabla

Tipo de OLEDB:Engine JetX.x archivos MDB con formato de Jet1JET102JET113JET2X4JET3X5JET4X



__________________
-- Nunca te des por vencido, aún vencido -- Web
  #16 (permalink)  
Antiguo 22/04/2011, 15:07
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Calculos Matematicos con Inputbox y textbox

Dejo una aclaracion muy util a la hora de trabajar con textbox / inputbox que me ha ahorrado muchas horas de prueba y error:

1) El valor de un Textbox es una variable string/variant, en cristiano, es variables de tipo texto.

2) Las funciones CCur y CDbl son funciones de conversión de tipo de variable a variable de tipo numérico.

3) En operaciones aritméticas debemos usar únicamente variables de tipo numérico.

4) La función Val, extrae la parte numérica de un texto, no es, repito, no es, una función de conversión de tipo de variable a variable de tipo numérico.

Ejemplo:

Val("175,25") = 175 porqué la coma no es un número
CCur("175,25") = 175,25 porqué interpreta la coma como el separador decimal



Conclusiones:

1ª) Convertir siempre los TextBox a variable de tipo numérico antes de operar con ellos.
2ª) No usar nunca la función Val para convertir un Textbox a variable de tipo numérico.
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #17 (permalink)  
Antiguo 07/09/2011, 11:12
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Respuesta: FAQ`s Ofimatica

Les dejo una macro para ocultar el puntero del mouse en excel mientras corre nuestra macro, solo un detalle ....

Private Declare Function ShowCursor Lib "USER32" _
(ByVal fShow As Integer) As Integer

Sub hide()
While ShowCursor(False) >= 0
Wend
End Sub

Sub show()
While ShowCursor(True) < 0
Wend
End Sub

Ojo que al ocultarlo no se ve en excel ni en la ventana edicion de VBA por lo que tengan cuidado para volver a mostrarlo
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #18 (permalink)  
Antiguo 06/10/2011, 08:34
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Proteccion de Hoja en Excel - Variantes

Agrego algunas propiedades no tan conocidas a la hora de proteger una hoja en excel:

Worksheets("Hoja1").Protect password:="tupassword", scenarios:=True, drawingObjects:="true, UserInterfaceOnly:=true


Al aplicar la protección que está solicitando la protección de toda la hoja.

Hay tres niveles de protección de hoja en la interfaz de usuario.

Ellos son:

DrawingObjects: Variante opcional. Fiel a proteger las formas. El valor predeterminado es False.

Contenido: La variante opcional. Fiel a proteger el contenido. Para ver un cuadro, esto protege todo el gráfico. Una hoja de cálculo, esto protege a las células individuales. El valor predeterminado es True.

Escenarios: Variante opcional. Fiel a proteger a los escenarios. Este argumento sólo es válido para las hojas de trabajo. El valor predeterminado es True


Hay un nivel cuatro en el VBA, es decir:

UserInterfaceOnly: Variante opcional. True para proteger la interfaz de usuario, pero no las macros. Si se omite este argumento, la protección se aplica tanto a las macros y la interfaz de usuario.


Todas las celdas están bloqueadas por defecto. El bloqueo de una celda no tiene ningún efecto a menos que la proteccion de la hoja se aplique
__________________
-- Nunca te des por vencido, aún vencido -- Web
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 16 personas




La zona horaria es GMT -6. Ahora son las 13:03.