- ベストアンサー
EXCEL2010から外部DLLをCall出来ない
下記のごときマクロをEXCELマクロに記入し、動かすとExcel2003では問題なく動くのですが、 Windows7+Excel2010の評価版を新規インストールした環境では「Call testDll」の文のところで 「実行時エラー48 ファイルが見つかりませんC:\Temp\testDll.dll」と出てしまうのです。 しかし、C:\Temp\testDll.dllは置いてあるのです。 Declare文の仕様が変わっているのでしょうか? どこに問題があるのでしょうか? 一応、マクロのセキュリティでc:\temp\は信頼できる場所にはして見たのですが変わりませんでした。 Declare Sub testDll Lib "C:\Temp\testDll.dll" () Sub Macro1() ' Cells.Select Selection.Copy Workbooks.Add Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ChDir "C:\temp" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:="C:\temp\testDATA.csv", FileFormat:=xlCSV, _ CreateBackup:=False ActiveWindow.Close Range("A1").Select Application.DisplayAlerts = True Call testDll '計算結果の読込み sdname = "C:\temp\testMES.csv" myfile = Dir(sdname) 'ファイルが存在しなければ空白 If myfile = "" Then '存在しない場合は MsgBox ("エラー発生") 'メッセージを表示 Else Workbooks.Open Filename:=sdname '存在する場合は開ける MsgBox ("正常終了") 'メッセージを表示 End If End Sub
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ファイルがあるのに「見つかりません」って言われるのは、フォルダ、およびファイルのアクセス権がない場合があると思いますが、C:\Temp、およびtest.dllのアクセス権は問題ないでしょうか? (エクスプローラから右クリック→プロパティで、それらしいタブがあると思います。)
お礼
回答ありがとうございます。 しかし、C:\Temp、およびtestdll.dllのアクセス権をプロパティで調べてみましたが、共にfullコントロールがついており、問題ではありませんでした。 (お礼が遅くなり申し訳ありませんでした)
補足
追記情報です。 1、 windows7+excel2003 の組合せで同じマクロを実行してみると、同じエラーを起こしました。 Windows7の問題の様です。 当然、Windows7でc:\tempのホルダーへのアクセス権は付けました。 2、見つからないといわれるtestDll.dllをc:\WINDOWS\system c:\WINDOWS\system32 の両方にコピーし、declale文を次の様に絶対パスをはずしましたが、エラーメッセージは変わらずでした。 Declare Sub testDll Lib "testDll.dll" ()