Quisiera saber si me pudieras apoyar en como capturar una foto desde un formulario en excel vba, es para una plantilla de empleados y quiero que al agregar nuevos empleados con un botón se pueda tomar la foto desde una webcam y lleve el dato de la ubicación a un textbox.
Bueno aquí te envío la solución al problema aunque no es muy elegante. No he encontrado nada mejor. Además tendrás que adaptarla a tus necesidades. Supongo que tienes un formulario con un botón, un textbox y una imagen. Al inicializarlo se crea una hoja para cosas temporales. O bien la borras al acabar o bien compruebas que ya existe antes de intentar crearla. Si no te dará error la segunda vez que ejecutes el formulario y siguientes. Esto te lo dejo a ti. Const htmp = "TmpGif" Const fgif = "foto" Const mipath = "c:\" 'debe acabar en \ el directorio donde guardar las fotos Private Sub UserForm_Initialize() 'Crea la hoja para guardar temporalmente la foto 'ThisWorkbook.Worksheets.Add().Name = htmp Sheets(htmp).ChartObjects.Add(0, 0, 200, 250).Name = fgif End Sub Luego en el código del botón de captura: Private Sub CommandButton1_Click() Dim fichero As String Dim s As Shape Application.CommandBars.FindControl(ID:=1764).Execute 'es necesaria una hoja creada al inicio para la captura 'luego se puede borrar 'al grabar se crea una copia en la hoja que es un shape Selection.Copy Sheets(htmp).ChartObjects(fgif).Activate ActiveChart.ChartArea.Select ActiveChart.Paste fichero = mipath & fgif & ".gif" ActiveChart.Export Filename:=fichero 'graba en disco la foto Me.Image1.Picture = LoadPicture(fichero) Me.TextBox1.Text = fichero 'limpio la foto pegada y el chart For Each s In Sheets(htmp).Shapes s.Delete Next s End Sub Tendrás que cambiar las constantes a tu gusto o necesidades, así como probablemente quieras un contador para ir cambiando el nombre de la foto a medida que guardas (foto1.gif, foto2.gif...) Eso te lo dejo también a tu criterio Para que esto te funcione tienes que tener el driver de la webcam funcionando. Ya me dirás si te sirve.