-2

Windows OS (32 ビット) と Office 2007 (オフィス 32 ビット) で正常に動作する Excel で VBA を使用しています。Windows 8 (64 ビット) と Office 2010 (64 ビット) で作業を開始したとき、アプリケーションを実行できませんでしたExcel Office 2010にはVBA7が付属しているため、以下のコード行を追加しました。

#If VBA7 Then 
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 
#Else 
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
#End If 
#If VBA7 Then 
Declare PtrSafe Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As LongPtr, ByVal dwShareMode As LongPtr, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As LongPtr, ByVal dwFlagsAndAttributes As LongPtr, ByVal hTemplateFile As LongPtr) As Long 
Declare PtrSafe Function WriteFile Lib "kernel32.dll" (ByVal hFile As LongPtr, ByRef lpBuffer As Any, ByVal nNumberOfBytesToWrite As LongPtr, ByRef lpNumberOfBytesWritten As LongPtr, ByRef lpOverlapped As LongPtr) As Long 
Declare PtrSafe Function ReadFile Lib "kernel32" (ByVal hFile As LongPtr, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As LongPtr, ByRef lpNumberOfBytesRead As LongPtr, ByRef lpOverlapped As Any) As Long 
Declare PtrSafe Function CloseHandle Lib "kernel32.dll" (ByVal hObject As LongPtr) As Long 
#Else 
Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long 
Declare Function WriteFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, ByRef lpNumberOfBytesWritten As Long, ByRef lpOverlapped As Long) As Long 
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long 
Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long 
#End If

それはうまくいきましたが、アプリケーション(Excelシート)にアクセスしようとすると、

エラー「実行時エラー 429 - ActiveX コンポーネントはオブジェクトを作成できません」

私の問題 : 64 ビットの Windows 8 および 64 ビットの Office 2010 でのみ問題が発生します

  1. 上記の宣言されたコードに何か間違いがありましたか?

  2. 64ビットOSで32ビットCOMオブジェクトを強制的に実行できますか?どのように?

ここでオブジェクトを作成します

Dim objScript As New ScriptControl
Dim objNavFunctions As New NavFunctions
....
....
....

objScript.Language = "vbscript" ' **// here getting error
4

1 に答える 1

2

Microsoft では、64 ビット バージョンの Windows を使用している場合でも、32 ビット バージョンの Office をインストールすることをお勧めしています。64 ビット バージョンでは、ActiveX コントロールや VBA の制限など、機能が少なくなります。この問題に関する Microsoft からの引用を次に示します。

「32 ビット バージョンの Office には含まれているが、64 ビット バージョンの Office には含まれていないものは何ですか? ActiveX コントロール ライブラリ、ComCtl このライブラリには、ソリューションを構築するために使用される ActiveX コントロールが含まれています。次のマイクロソフトで最も一般的に使用されています。 Office プログラム: Access、Excel、および Word. SharePoint リスト コントロール SharePoint テクノロジのリスト ビューは、64 ビット バージョンの Office を使用しているユーザーには利用できません。

詳細については、Microsoft の記事を参照してください。

于 2013-04-20T16:09:35.740 に答える