1

私が受け取っているもの:

実行時エラー「1004」:マクロMakros.xlm!MakroIniを実行できません。このワークブックでマクロが使用できないか、すべてのマクロが無効になっている可能性があります。

... Excel2010の特定のインスタンスでマクロを実行する場合。一部のExcel2010インストールおよびExcel2003では、正常に動作します。

関係するワークブックは、Macro.xlmとUsername.xlsの2つです。両方のファイルはリモートサーバーに保存されます。

実行時にマクロがクラッシュします。

Workbooks.Open Makro_Path & Makro_Nam, ReadOnly:=True
Application.Run Makro_Nam & "!MakroIni", WbTyp

最初の行は適切に実行され、すべてのマクロが表示されます。Makro_Namは次のように定義されます。

Public Const Makro_Nam As String = "Makros.xlm"

私に何ができる?

4

2 に答える 2

1

実は原因はExcel 64ビットでした。

Makro.xlm ワークシートには、次の関数定義が含まれていました。

Private Declare  Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare  Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" ( _
ByVal hFindFile As Long, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare  Function FindClose Lib "kernel32.dll" ( _
ByVal hFindFile As Long) As Long
Private Declare  Function FileTimeToLocalFileTime Lib "kernel32.dll" ( _
ByRef lpFileTime As FILETIME, _
ByRef lpLocalFileTime As FILETIME) As Long
Private Declare  Function FileTimeToSystemTime Lib "kernel32.dll" ( _
ByRef lpFileTime As FILETIME, _
ByRef lpSystemTime As SYSTEMTIME) As Long

それらをptrsafeに変更しました:

Private Declare PtrSafe Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( _
ByVal lpFileName As String, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare PtrSafe Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" ( _
ByVal hFindFile As Long, _
ByRef lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare PtrSafe Function FindClose Lib "kernel32.dll" ( _
ByVal hFindFile As Long) As Long
Private Declare PtrSafe Function FileTimeToLocalFileTime Lib "kernel32.dll" ( _
ByRef lpFileTime As FILETIME, _
ByRef lpLocalFileTime As FILETIME) As Long
Private Declare PtrSafe Function FileTimeToSystemTime Lib "kernel32.dll" ( _
ByRef lpFileTime As FILETIME, _
ByRef lpSystemTime As SYSTEMTIME) As Long

今ではうまくいくようです。

于 2012-05-09T08:07:44.337 に答える
0

マクロが何をするかにもよりますが、明らかな答えは、設定する必要があるようです

ReadOnly:=True

することが

ReadOnly:=False

マクロでデータを変更できるようにします。

于 2012-05-08T10:54:44.250 に答える