アプリ版:「スタンプのみでお礼する」機能のリリースについて

パイソンでエクセルマクロを動かしたいのだがpywin32というのを何とか使えるようにして
import os
import sys

script_path = os.path.dirname(__file__)
sys.path.append(os.path.join(script_path, "Lib/site-packages"))
sys.path.append(os.path.join(script_path, "Lib/site-packages/win32"))
sys.path.append(os.path.join(script_path, "Lib/site-packages/win32/lib"))
os.environ["PATH"] = os.environ["PATH"] + ";" + os.path.join(script_path , "Lib/site-packages/pywin32_system32")

import win32com.client


# プログラム2|Excelアプリケーションを起動
Excel = win32com.client.Dispatch('Excel.Application')
Excel.Visible = True
Excel.DisplayAlerts = False

# プログラム3|エクセルを開く
filename = 'makuro.xlsm'
fullpath = os.path.join(os.getcwd(),filename)
wb = Excel.Workbooks.Open(Filename=fullpath)

# プログラム4|マクロ実行
Excel.Application.Run(filename + '!irotukeaka')

# プログラム5|エクセルを保存して閉じる
newfilename = '' + filename
newfullpath = os.path.join(os.getcwd(),newfilename)
wb.SaveAs(newfullpath)
wb.Close()

# プログラム6|Excelアプリケーションを閉じる
Excel.DisplayAlerts = True
Excel.Application.Quit()

でもって やっとpywin32が動き 試験的に作ったmakuro.xlsm というマクロの入ったエクセルファイルで特定セルに色付けさせてみたが(sheet1だけしかない) これが複数あるsheetのあるエクセルファイルの場合 どのsheetのマクロを動かしたい場合 どのように記述するのでしょうか。

質問者からの補足コメント

  • 有難う。
    <これはPythonが実行した事ではなく、Excelに仕込んだマクロが実行した事なのではないかと感じますが違いますか?

    そうだと考えております、パイソンでエクセルに入り エクセルのマクロボタンを押したことだとおもいます。これと違って Pythonが実行とはどのようなことなんでしょうかよくわかりません。
    Pythonが直接実行するプログラムもあるんでしょうね。
    小生の聞きたかったのは前のプログラムでおいて、一つのファイルにsheetが複数あってその中にある例えば sheet5にあるマクロボタンを作動させたいとき どのように記述するのでしょうかということです。そのsheet名をどのように記述すればいいのでしょうかということです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/12/12 13:12

A 回答 (3件)

>特定セルに色付けさせてみた



これはPythonが実行した事ではなく、Excelに仕込んだマクロが実行した事なのではないかと感じますが違いますか?
もしそうならマクロの方を弄るか、マクロの内容(詳細が不明)をPythonで行ないマクロの呼び出しをやめるって事になるのでは?

どちらにしてもマクロの内容によると思いますよ。

ただ『ActiveSheet』に対して実行されるのなら、

#-----------------------
for ws in wb.Sheets:
____ws.Activate()
#プログラム4|マクロ実行
____Excel.Application.Run(filename + '!irotukeaka')
#-----------------------

"_"4個はインデントの変わりなので修正して使って下さい。
初めて使ったのでこれが正解と自信を持っては言えませんけど。
逆に自身はない!とは言えます。。。
この回答への補足あり
    • good
    • 0

wb.Sheets



wb.Worksheets

でもOK。
    • good
    • 0

基本的にはVBAと変わらないように思いますよ。



wb.Worksheets(1)
とか、あとは以下に色々と。
http://wheelchairtext.net/program/1830/

>Pythonが実行とはどのようなことなんでしょうかよくわかりません。

VBAに頼らず今回のPythonでExcelを操作する中で、
>特定セルに色付けさせてみた
も実施してしまうと言う感じですね。
上記リンクではシートについて検索し見つけましたけど、Rangeについて検索してみると見つかるかもしれないです。
様子的にVB.NETやVC#からエクセルを操作するのと似てましたし。
⇒ちょっと今回のPythonのpywin32よりはややこしかったですけど。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!