プログラミング初心者でも自在に編集できるカンタンな方法は?
GUIで見やすく、コピペで使えるPythonのサンプルコードとか落ちてない?
こんな疑問にお答えします。
当ブログにお立ち寄り頂きまして、ありがとうございます!m(_ _)m
こう見えて実は、飽き性で非エンジニアのくせしてPython学習をはじめて5カ月目に突入したことに気付いた赤兎馬おじさん(@sekitoba1007)です。
無料で使えるPythonはプログラミング初心者にも比較的わかりやすく、AIだけでなく幅広く利用できるので業務効率アップにも便利で人気がありますよね!
パソコンを日頃から使っている人は、何気なく繰り返している機械的な作業も多いはず。
ファイルやフォルダをあちこち探したりいちいちクリックして起動させたりする作業は、あまり効率的とは言えません。
いろんなことができるプログラミング言語であるPythonなら、Excelを読み込みリンクを辿ってサイトを開いたり、よく使うアプリを起動したりすることもできます。
そこで思いついたのが「使用する頻度の高いアプリやサイトを、Excelで編集するだけで使えるリンクの一覧」を作るアイデア。
■プログラミングのスキルがない人たちでも簡単に使える
■気付いたときに、いつでもサッと追加・削除など編集しやすい
今回は、「パスを編集するだけで誰でもスグに使えるサンプルコード」も用意しておきましたので、ぜひ感謝して試してみてください。
目次
- 【コピペOK】PythonでExcelを読み込みするだけのサンプルコード
- Pythonで読み込みするExcelファイル
- 改善が進む!読み込み対象のコツ
- 【まとめ】PythonでExcelを読み込みするだけでできる業務効率UP術
【コピペOK】PythonでExcelを読み込みするだけのサンプルコード
ブログ×プログラミングの二刀流で爆誕😂
— 赤兎馬(せきとば)@ややゆるいおやじブロガー (@sekitoba1007) June 25, 2023
Python学習の一環で自作したブログ用メニュー画面。工夫したのは「Excelのリストを読み込んでいる」ので、一度作ったらコードを編集する必要がないこと。Excelをサッと編集して読み直せば更新完了。使用頻度の高い作業を集めて作業効率アップを狙う⤴#ブログ pic.twitter.com/AKE6fccqy8
「PySimpleGUI」を使ったPythonコードは、以下のとおりです。
import PySimpleGUI as sg
import pandas as pd
import subprocess
import os
import webbrowser
import threading
# Excelファイルを読み込む
excel_file_path = r"program_list.xlsx" # ここにパスを記載
df = pd.read_excel(excel_file_path)
# "TAB名称"、"PG名称"、"PGリンク"の列の値を取得
tab_names = df["TAB名称"].unique() # 重複を排除したTAB名称のリスト
pg_names = df["PG名称"].tolist() # PG名称のリスト
pg_links = df["PGリンク"].tolist() # PGリンクのリスト
# タブレイアウトの作成
tab_layouts = []
for tab_name in tab_names:
# 選択されたTABに応じて対応するPG名称とPGリンクを取得
selected_pg_names = [pg_name for pg_name, tab in zip(pg_names, df["TAB名称"]) if tab == tab_name]
selected_pg_links = [pg_link for pg_link, tab in zip(pg_links, df["TAB名称"]) if tab == tab_name]
# タブのレイアウト
tab_rows = []
for pg_name, pg_link in zip(selected_pg_names, selected_pg_links):
# 「実行」ボタンのクリック時のコールバック関数
def run_program(pg_link):
subprocess.run(pg_link, shell=True) # PGリンクを実行する
# PG名称と「実行」ボタンを含むレイアウト
row = [sg.Button("実行", key=pg_link), sg.Text(pg_name)]
tab_rows.append(row)
tab_layout = tab_rows
tab_layouts.append(tab_layout)
# タブグループの作成
tab_group_layout = [[sg.Tab(tab_name, tab_layouts[i]) for i, tab_name in enumerate(tab_names)]]
# 全体のレイアウト
layout = [[sg.TabGroup(tab_group_layout)], [sg.Button("終了")]]
# ウィンドウを作成
window = sg.Window("プログラム一覧", layout)
# 「実行」ボタンのクリック時のコールバック関数
def run_program(pg_link):
subprocess.run(pg_link, shell=True) # PGリンクを実行する
def open_link(link):
if link.startswith("http://") or link.startswith("https://"):
webbrowser.open(link) # URLを開く
elif os.path.isdir(link):
os.startfile(link) # フォルダを開く
else:
subprocess.run(link, shell=True) # ファイルを実行する
# 「実行」ボタンのクリック時のイベントハンドラ
def handle_button_click(event):
if event in pg_links:
index = pg_links.index(event) # クリックされたボタンに対応するPGリンクのインデックスを取得
pg_link = pg_links[index]
# スレッドを使用してプログラムを非同期に実行する
threading.Thread(target=open_link, args=(pg_link,)).start()
# イベントループを開始
while True:
event, values = window.read()
# ウィンドウが閉じられた場合や終了ボタンが押された場合はループを終了
if event == sg.WINDOW_CLOSED or event == "終了":
break
# 「実行」ボタンがクリックされた場合
handle_button_click(event)
# ウィンドウを閉じて終了
window.close()
上部の「excel_file_path = r"program_list.xlsx" # ここにパスを記載」の部分に、実際に使うExcelファイルのパスを指定すれば完成です。
【PySimpleGUI】ライブラリのインストール(必要に応じて)
PySimpleGUIのインストールに必要なコードです。
pip install PySimpleGUI
【pandas】ライブラリのインストール(必要に応じて)
pandasのインストールに必要なコードです。
pip install pandas
Pythonで読み込みするExcelファイル
「TAB名称」「PG名称」「PGリンク」という3つの列を作ります。
「TAB名称」は、メニュー画面のタブに反映したい名称を記入してください。作業やジャンルごとに自分でわかりやすい名称にするのがオススメです。
「PG名称」は、各タブごとに羅列されるプログラムの名称を記入してください。
「PGリンク」は、リンクさせるパスを記入してください。ほかのプログラムを起動させたり、PC内のフォルダやファイルを開かせたり、URLを記入しておけばよく使うサイトを開いたりすることもできちゃいます。
作成したExcelファイルを任意のフォルダに格納したら、そのパスを前述したとおりコードに書き換えて指定してください。
パスの簡単な取り込み方
「Shift」を押しながらファイルを右クリックすると、「パスのコピー」が簡単にできますのでご内密に。
改善が進む!読み込み対象のコツ
実際に自分で使ってみてわかったポイントとして、読み込み対象には「Excelの読込リスト自身へのリンクも設けておくこと」が超オススメです。
なぜなら、思いついたときにサッと編集できると効率アップがどんどん進むから!
ひらめいたときやアイデアを試したいとき、すぐにExcelのリスト編集ができると改善が繰り返されてもうウハウハが止まらな楽しくなってくるはずですよ。
【まとめ】PythonでExcelを読み込みするだけでできる業務効率UP術
今回は、業務効率アップ術として「非エンジニアでも活用・編集できるExcelを使ったPythonコード」を解説しました。
何から何まで社内SEに丸投げするのではなく、Excelさえ使えれば自分でカスタマイズできる方法は特別なプログラミングのスキルが不要なうえ非エンジニアのITリテラシーを育てる意味でも有効なはず!
組み合わせなどアイデアしだいで実用性や拡張性は無限に広がるはずなので、ぜひやってみてくだいまし。
最後までお読みいただき、ありがとうございました。