

VBAでpythonのプログラムを動かす際にタイトルのエラーが出ます。  
エラー内容はPermissionError : Permission denied:'excelのファイル名.xlsm'  
よろしくお願いいたします。

VBAのコードはこちらです。

[code]

    Sub SampleCall()
        RunPython ("import auto_py;auto_py.textdownload()")
    End Sub
    
[/code]


CC BY-SA 4.0
2018-07-23T02:12:22.680
46853
2022-03-14T06:02:35.250
29386
question
python python3 vba
VBAでpythonを動かしたときのpermissionErrorの解決方法


Excelのファイルが起動されている場合、そのファイルは、他のアプリケーションからは読み取りも書き込みも禁止になります。`auto_py`の中で起動中のExcelのファイルにアクセスしているとそのエラーが発生します。

一般的には、そのExcelのファイルを閉じてから実行すればいいのですが、もし、そのExcelのファイルがその`VBA`があるファイルであれば閉じることができないので、処理の前後にクリップボード等にデータを保存することで回避するようにします。

クリップボードを使う場合には、Pandasを使うと楽です。VBA側を以下のようにして

[code]

    Sub SampleCall()
        Range("A1:E10").Select
        Selection.Copy
        RunPython ("import auto_py;auto_py.textdownload()")
        Range("G1").Select
        ActiveSheet.Paste
    End Sub
    
[/code]

Python側は、次のように簡単に書くことができます。必要に応じて`header`等のオプションを設定してください。

[code]

    import pandas as pd
    
    df = pd.read_clipboard()
    #処理
    df.to_clipboard()
    
[/code]


CC BY-SA 4.0
2018-07-23T02:55:20.537
46854
2018-07-23T08:21:06.420
2018-07-23T08:21:06.420
15171
15171
46853
answer