Excel - Error de compilación (actualización necesaria para sistemas de 64byts)

 
Vista:

Error de compilación (actualización necesaria para sistemas de 64byts)

Publicado por Ignacio (21 intervenciones) el 04/01/2013 09:08:22
Buenas, Tengo un ligero problemilla, me aparece lo siguiente:
Error de compilación: El código de este proyecto debe actualizarse para usarse en sistemas de 64 byts. Revise y actualice las instrucciones Declare y, a continuación, márquelas con el atributo PtrSafe.



Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal

lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Const conSwNormal = 1
Private Sub Command1_Click() On Error Resume Next ShellExecute hwnd, "print", Cells (1,1), vbNullString, vbNullString, conSwNormal

End Sub




Como podría solucionarlo?? Muchísimas gracias!!!
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 Mauricio

Error de compilación (actualización necesaria para sistemas de 64byts)

Publicado por Mauricio (4 intervenciones) el 19/01/2013 23:57:17
1
2
3
4
5
6
7
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As LongPtr, _
         ByVal lpOperation As String, _
         ByVal lpFile As String, _
         ByVal lpParameters As String, _
         ByVal lpDirectory As String, _
         ByVal nShowCmd As Long) As LongPtr


puedes consultar la documentación de Microsoft para la compatibilidad entre 32bits y 64bits:

Working with VBA in Office 2010 (32-bit) and Office 2010 (64-bit)

Compatibility Between the 32-bit and 64-bit Versions of Office 2010

Allí se aconseja usar compilación condicional para que tu código corra correctamente tanto en instalaciones de 32 como de 64bits:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As LongPtr, _
         ByVal lpOperation As String, _
         ByVal lpFile As String, _
         ByVal lpParameters As String, _
         ByVal lpDirectory As String, _
         ByVal nShowCmd As Long) As LongPtr
#Else
    Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, _
         ByVal lpOperation As String, _
         ByVal lpFile As String, _
         ByVal lpParameters As String, _
         ByVal lpDirectory As String, _
         ByVal nShowCmd As Long) As Long
#End If


acá encuentras una buena lista de declaracioens APIs para VBA/VB6 en versión de 32 y 64bits:

Declaring API Functions In 64 Bit Office
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

Error de compilación (actualización necesaria para sistemas de 64byts)

Publicado por Carlos Calderon (1 intervención) el 20/01/2014 04:20:02
gracias me soluciones el error
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