Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

369
Vistas
El método VBA 'SaveAs' del objeto '_Workbook' falló, pero solo en una computadora

Entonces, tengo un programa escrito que funcionaba bien, agregué soporte adicional para otro archivo de datos que funciona bien en mi computadora, pero en una de las computadoras de mis compañeros de trabajo, el código sigue arrojando un error que se refiere al método de guardar como siendo la causa.

Otro hilo que encontré sugiere que un formato de fecha podría ser el problema, pero eso no parece tener sentido en este punto del procedimiento de guardado.

Guarda el archivo con el nombre correcto, incluso me pregunta si quiero reemplazar un archivo con el mismo nombre, luego de que se crea el archivo guardado es cuando el depurador arroja el error.

(Tampoco sucedió la primera vez que ejecuté el programa en su máquina, arrojó un error más abajo en el código y cuando volví a ejecutar con puntos de interrupción, comenzó a arrojar el error en la función de guardar que escribí)

Otro hilo mencionó que Active Workbook puede estar causando problemas y usar ThisWorkbook podría funcionar mejor, supongo que estoy confundido por qué funciona en mi máquina y no en la de ella. ¿Cuál sería el problema?

De todos modos, aquí está el bloque de código que arroja el error, ¡gracias de antemano por ayudar a todos!

ActiveWorkbook.SaveAs es la línea que arroja el error, y luego crea el archivo...

 Private Sub SaveAsNew(parseName As String, path As String) Dim sheetToCopy As String sheetToCopy = "Sheet1" Worksheets(sheetToCopy).Copy With ActiveWorkbook .SaveAs path & "\" & parseName & "StandardForm.xlsx" .Close savechanges:=False End With End Sub
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Exportar hoja de trabajo a nuevo libro de trabajo

  • Si ocurre un error, aparecerá un mensaje en la ventana Inmediato ( Ctrl + G ).
 Option Explicit Private Sub SaveAsNew(ByVal ParseName As String, ByVal DestPath As String) Const ProcName As String = "SaveAsNew" Dim Success As Boolean On Error GoTo ClearError ' enable error-trapping ' Source - copy a worksheet Const sName As String = "Sheet1" ' Destination - save a single-worksheet workbook Const dRightName As String = "StandardForm.xlsx" ' Determine the destination folder path. Dim dFolderPath As String: dFolderPath = DestPath If Right(dFolderPath, 1) <> "\" Then dFolderPath = dFolderPath & "\" ' Validate the existence of the destination folder path. If Len(Dir(dFolderPath)) = 0 Then MsgBox "The path '" & dFolderPath & "' doesn't exist.", vbCritical Exit Sub End If ' Reference the source workbook. Dim swb As Workbook: Set swb = ThisWorkbook ' workbook containing this code ' Attempt to reference the source worksheet. Dim sws As Worksheet On Error Resume Next ' defer error-trapping Set sws = swb.Worksheets(sName) On Error GoTo ClearError ' re-enable error-trapping ' Validate the existence of the source worksheet. If sws Is Nothing Then MsgBox "The worksheet '" & sName & "' doesn't exist.", vbCritical Exit Sub End If Application.ScreenUpdating = False ' Return a copy of the source worksheet in a new single-worksheet workbook. sws.Copy ' Reference this workbook, the destination workbook. Dim dwb As Workbook: Set dwb = Workbooks(Workbooks.Count) ' Write the destination file path to a variable Dim dFilePath As String: dFilePath = dFolderPath & ParseName & dRightName ' Save the destination workbook (file). Application.DisplayAlerts = False ' overwrite without confirmation dwb.SaveAs dFilePath, xlOpenXMLWorkbook Application.DisplayAlerts = True ' If you don't overwrite, when you press 'No' or 'Cancel', ' an error will occur. dwb.Close SaveChanges:=False ' it's already saved ' Validate the success. Success = True ProcExit: On Error Resume Next ' defer error-trapping (to avoid an endless loop) If Not Application.ScreenUpdating Then Application.ScreenUpdating = True ' Inform. If Success Then MsgBox "Worksheet exported.", vbInformation Else MsgBox "Something went wrong.", vbCritical End If On Error GoTo 0 ' disable error-trapping Exit Sub ClearError: Debug.Print "'" & ProcName & "' Run-time error '" _ & Err.Number & "':" & vbLf & " " & Err.Description Resume ProcExit End Sub
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda