
パイソンでエクセルマクロを動かしたいのだが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のマクロを動かしたい場合 どのように記述するのでしょうか。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
基本的にはVBAと変わらないように思いますよ。
wb.Worksheets(1)
とか、あとは以下に色々と。
http://wheelchairtext.net/program/1830/
>Pythonが実行とはどのようなことなんでしょうかよくわかりません。
VBAに頼らず今回のPythonでExcelを操作する中で、
>特定セルに色付けさせてみた
も実施してしまうと言う感じですね。
上記リンクではシートについて検索し見つけましたけど、Rangeについて検索してみると見つかるかもしれないです。
様子的にVB.NETやVC#からエクセルを操作するのと似てましたし。
⇒ちょっと今回のPythonのpywin32よりはややこしかったですけど。
No.1
- 回答日時:
>特定セルに色付けさせてみた
これはPythonが実行した事ではなく、Excelに仕込んだマクロが実行した事なのではないかと感じますが違いますか?
もしそうならマクロの方を弄るか、マクロの内容(詳細が不明)をPythonで行ないマクロの呼び出しをやめるって事になるのでは?
どちらにしてもマクロの内容によると思いますよ。
ただ『ActiveSheet』に対して実行されるのなら、
#-----------------------
for ws in wb.Sheets:
____ws.Activate()
#プログラム4|マクロ実行
____Excel.Application.Run(filename + '!irotukeaka')
#-----------------------
"_"4個はインデントの変わりなので修正して使って下さい。
初めて使ったのでこれが正解と自信を持っては言えませんけど。
逆に自身はない!とは言えます。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Windows 10 pathが通らない 2 2023/03/27 11:28
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
ウインドウズXP2台とME1...
-
ファイルの並び順が勝手に変わる
-
ソフト探し
-
98のサーバーへ2000でア...
-
PCカードのドライバ(socketsv....
-
Excelのシート名で検索はできま...
-
IE5.5を使用中に突然例外OEが発...
-
スキャンディスクができません
-
Samba で新規作成したファイル...
-
ウィンドウズ8 でフォルダー内...
-
Not kind:Folders
-
隠しファイル
-
Apoint2Kってスパイウェアでし...
-
Ububtuでファイル共有できない...
-
batファイルで
-
Windows7でiniファイルが作成さ...
-
フォントのバージョンを下げたい
-
デスクトップ上に同じフォルダ...
-
VBAで、㉑という数値が、正しく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】写真の縦横比を変えずに...
-
excelで
-
エクセルの数式で教えてください。
-
VBAで同一フォルダにあるブック...
-
~$のファイルを含まずにフォル...
-
【再】MATLABのcsvreadについて
-
フォルダ名表示をするには?
-
常に「すべての列のサイズを自...
-
Not kind:Folders
-
検索したファイルの場所を調べ...
-
タスクスケジューラで指定フォ...
-
ファイル並び順がバラバラで困...
-
Ububtuでファイル共有できない...
-
Win 10エクスプローラーについ...
-
System32内のファイルを書き換...
-
VB.net 任意の例外を発生させ...
-
シャットダウン時に自動ファイ...
-
拡張子KIHを見るソフトって有り...
-
ショートカットファイルそのも...
-
貼り付けとショートカットの貼...
おすすめ情報
有難う。
<これはPythonが実行した事ではなく、Excelに仕込んだマクロが実行した事なのではないかと感じますが違いますか?
そうだと考えております、パイソンでエクセルに入り エクセルのマクロボタンを押したことだとおもいます。これと違って Pythonが実行とはどのようなことなんでしょうかよくわかりません。
Pythonが直接実行するプログラムもあるんでしょうね。
小生の聞きたかったのは前のプログラムでおいて、一つのファイルにsheetが複数あってその中にある例えば sheet5にあるマクロボタンを作動させたいとき どのように記述するのでしょうかということです。そのsheet名をどのように記述すればいいのでしょうかということです。