0

Pythonで以下のExcel VBAコードと同等のことをしたい - COM

Private Declare Function SetDllDirectory Lib "kernel32.dll" Alias "SetDllDirectoryA" ( _
    ByVal lpPathName As String) As Boolean

今Excel VBAで、私は呼び出すことができますSetDllDirectory(dllPath)

MSDN SetDllDirectory : http://msdn.microsoft.com/en-gb/library/windows/desktop/ms686203(v=vs.85).aspx

一方、Python では win32com を使用します。

import win32com.client
xlapp = win32com.client.DispatchEx("Excel.Application") 

どうすればxlapp.SetDllDirectory(dllPath) (明らかにこれは無効なので、この質問です)?

私も試しctypes.windll.kernel32.SetDllDirectoryA ましたが、これはPythonのDLLディレクトリのみを設定し、xlapp(COMによって操作されているExcelインスタンス)は設定しません。

詳細: 基本的に、XLL を Excel (xlapp.RegisterXLL) に動的にロードしようとするため、これを行っています。ただし、この特定の xll ファイルには、特定のパスに存在する dll が必要です。したがって、DLL パスを設定する機能が必要です。

どうもありがとう!クリス

4

1 に答える 1

1

コードが PyXLL を使用して Excel で実行されていると仮定すると、os.environ を使用してパスを設定すると、必要なことが行われます。

os.environ["PATH"] += ";" + dllpath

win32com を使用して現在実行中の Excel アプリケーションを取得するだけの場合、そのパスを変更するのはそれほど簡単ではありませんが、代わりに dll の依存関係を xll と同じフォルダーにまとめることができます。

于 2014-07-04T15:10:30.047 に答える