현재 작업중인 새로운 win7 시스템에 적용 할 수있는 VBA 코드를 만들고 있습니다. 즉, 새로운 64 비트 호환성으로 많은 기능을 추가해야합니다. 현재 this 홈페이지의 지침을 따르고 있습니다.Excel 2003의 PtrSafe에서 문제가 발생했습니다.
그러나#If VBA7 Then
Declare PtrSafe Function CreateProcess Lib "kernel32" 'More code, see below.
#Else
Declare Function CreateProcess Lib "kernel32" 'More code, see below.
#EndIf
은 현재 VBA 오류 메시지가 다음 나에게주고 내 코드를 저장할 때 :
가 참고 : 위의 코드는 설명 된 코드를 포함를 나는 다음 그들에게 매우 유용 및 구현 앞에서 언급 한 링크 : from jkp-adsDeclare PtrSafe Function CreateProcess Lib "kernel32" Alias "CreateProcessA"
에 오류가 나타납니다. 전체 코드는 here입니다.
무엇이 여기에 있습니까? 감사합니다.
업데이트 내 전체 코드는 :
Option Explicit
Const INFINITE = &HFFFF
Const STARTF_USESHOWWINDOW = &H1
Private Enum enSW
SW_HIDE = 0
SW_NORMAL = 1
SW_MAXIMIZE = 3
SW_MINIMIZE = 6
End Enum
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Byte
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Enum enPriority_Class
NORMAL_PRIORITY_CLASS = &H20
IDLE_PRIORITY_CLASS = &H40
HIGH_PRIORITY_CLASS = &H80
End Enum
#If VBA7 Then
private Declare PtrSafe Function CreateProcess Lib "kernel32" _
Alias "CreateProcessA" (ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
lpProcessAttributes As SECURITY_ATTRIBUTES, _
lpThreadAttributes As SECURITY_ATTRIBUTES, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _
ByVal lpCurrentDriectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As LongPtr
#Else
Declare Function CreateProcess Lib "kernel32" _
Alias "CreateProcessA" (ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
lpProcessAttributes As SECURITY_ATTRIBUTES, _
lpThreadAttributes As SECURITY_ATTRIBUTES, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _
ByVal lpCurrentDriectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long
#End If
는 지금, 나는 몇 가지를 강조하고 싶다. 먼저 Excel 2003 및 Windows XP 32 비트를 실행하고 있습니다. 이 외에도 코드를 실행하려고 시도하지 않았습니다.. 왜 물을 수 있습니다. 그 이유는 간단합니다. 에디터는 내가 할 수 있기 전에 컴파일 에러를 낸다. 이 컴파일 오류는이 코드 위에있는 그림에서 볼 수 있습니다. 일부 코드의 스크린 샷을 찍었으며 특히 컴파일 오류가 발생한 곳을 찍었습니다. 이는 모습입니다 :
UpdateUpdate : 는 "이 문제를 해결하려면 무시"컴파일 오류 "과의 VBA 코드를 실행 : 그냥 해상도가 다음과 같은 것 같습니다 this article from MS support. 발견 Office 2010 프로그램의 64 비트 버전. " 나는 아직도 어떤 해결책이 존재하기를 바랍니다.
내게 잘 보이네요. 단, '# EndIf'에 오타가있는 공백이 있어야합니다. BTW [이] (http://www.jkp-ads.com/articles/apideclarations.asp) 링크를 보았습니까? –
@PradeepKumar : 질문에서 OP와 똑같은 링크입니다 :-) 또한 VBA 편집기는 자동으로 공간을 추가하므로 문제가되지 않아야합니다. –
@ Jean-FrançoisCorbett : 아! 예 :) 나는 그것을 놓쳤습니다 ... –