質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
xlwings

xlwingsは、ExcelをPythonで操作するためのオープンソースライブラリです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3207閲覧

VBAからpythonの実行 xlwings うまく動かない

kura-ta.31

総合スコア0

xlwings

xlwingsは、ExcelをPythonで操作するためのオープンソースライブラリです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/04 02:14

前提・実現したいこと

VBAにxlwingsをアドインし、VABからpythonを実行しています。
これまで動いていたのに動かなくなったり、PCによっては最初から動かなかったりします。
何か設定が干渉しているように思うのですが、解決の糸口がつかめず困っています。
教示いただけると助かります。

発生している問題・エラーメッセージ

VBA側にて

実行時エラー'9' インデックスが有効範囲にありません

デバッグすると
xlwingsのコードにて、以下で止まっています。

Function SheetExists(sheetName As String) As Boolean
Dim sht As Worksheet
On Error Resume Next
Set sht = ThisWorkbook.Sheets(sheetName) ←ここで止まっています
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function

該当のソースコード

以下一例を示します(以下のような初歩的な連携も動きません)

VBA側

1Sub Run_Python() 2 Call RunPython("import 2;2.test()") 3End Sub

python側

1import xlwings as xw 2 3def test(): 4 txt = xw.Range('A1').value 5 txt += ', I have a pen.' 6 xw.Range('B2').value = txt

試したこと

xlwingsのアドインのやり直し
pythonプログラム中、sheet名追加
別ソフトのため、Oracle Cliant 12c 32bit をインストールしてから動かなくなったものあり。
ただし、動くPCもあり、根本原因ではないと考えています(設定の問題かと思っています)

補足情報(FW/ツールのバージョンなど)

Windows 10 Pro
Microsoft office2016
python3.8.5(anaconda使用)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

対象のシートが存在しないためのエラーと思われます。
エラー箇所にブレークポイントを置いて、変数sheetNameに入っている文字列を確認してください。また、そのシート名のシートは、提示いただいたマクロが含まれるブックにあることを確認してください。
存在しない場合、シート名はこのプロシージャの引数で渡されていますから、呼び出し元のコードを確認または提示してください。

投稿2021/10/04 02:39

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kura-ta.31

2021/10/04 04:06

早速のご教示ありがとうございます。 MsgBoxにて確認したところ、sheetNameにはxlwings.conf、ThisWorkbook.Nameには1.xlsm(VBAのファイル名)となっていました。動くPC、動かないPC双方同じです。動くPCのxlwings.confと中身が異なっていたため、合わせましたが解決しませんでした。動くPCはMsgboxが何回か表示(ループしているよう)して、結果表示されます。動かないPCはMsgboxが表示され、その後先に提示しましたエラーが発生し停止します。そもそもシート名がxlwings.confのため、この辺の詳細がよくわかっていないのですが、原因わかりませでしょうか?
hex309

2021/10/04 04:45 編集

なるほど。念のため確認ですが、 MsgBoxが何度か表示されるとのことですが、すべてsheetNameは、「xlwings.conf」ですか? 異なる場合は、そのシートが対象ファイルにあるか確認してください。 また、呼び出し元のコードは提示できますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問