この記事はPython初心者によるPython初心者に向けのものです
Pythonのコードを公開していますが、解説などは一切ございません
業務や日常のルーチンワークが改善できればそれでいいじゃないですか←
私は、EXCEL VBAがそこそこ得意で、Pythonを勉強し始めたばかりといったスキルレベルです
私は自分で言うのも何ですが、そこそこ器用です
Google検索結果の先人の知恵を借りパクし、パズルのように組み合わせて作りたい物を作成しているものですから
1からプログラミングすることは全くできないコピペ人間です
そんなGoogle検索能力に長けた私なのですが、
今回は「使う機会はあるだろうに、全く検索結果にヒットしない」課題がありました
それが、「Python Tkinter : EXCELのA列をプルダウンリストとして使用し、B列を抽出する」というもの
Python Tkinter画面
読み込み元のEXCELデータ
要するに、「読み込み元のEXCELデータ」のA列をプルダウンリスト、B列を結果に使用する
↓
「Python Tkinter画面」で『 米 』を選んでOKボタンを押すと、『 rice 』を抽出するというもの
今回は、「Python Tkinter画面」で『 米 』を選んでOKボタンを押すと
『 rice 』をGoogleで検索するという仕組みを作りました
ごめんなさい、説明がへたくそです
もうこの説明でピンと来ない人は、この先は見なくて大丈夫です
仕事でGoogle検索する時に、わざわざPythonを起動するなんて面倒なことはしないと思いますが、
『佐藤さん(A列)』を選択してOKボタンを押せば、『人事システムの佐藤さんのマイページのURL(B列)』を開く とか、
色々応用できると思うんですけどね
そもそも初心者の課題すぎて、みんな詰まらないのでしょうか……
コピペ人間にはつらいところ
で、今回たまたま上手くできたのでPythonを公開
~~~~~~~~~~~~~~~~~~~~~
import openpyxl
import tkinter as tk
import time
from tkinter import ttk
from selenium import webdriver
wb = openpyxl.load_workbook(r'C:\Users\ユーザーID\Desktop\\book1.xlsx') #EXCELの保存先
ws = wb.worksheets[0] #1シート目を指定
#A列をプルダウンリストとして使用する
valueslist = []
for cell in ws['A']:
valueslist.append(cell.value)
print(valueslist)
#B列をプルダウンリストに紐づく値として使用する
values1 = []
for cell in ws['B']:
values1.append(cell.value)
print(values1)
#辞書化
list1 = valueslist
list2 = values1
ziped = dict(zip(list1, list2))
#Tkinter
root = tk.Tk()
root.geometry("230x80")
v = tk.StringVar()
combobox = ttk.Combobox(root, textvariable= v, values=valueslist, style="office.TCombobox")
combobox.pack(pady=20,)
button1 = tk.Button(text="OK")
button1.place(x=190, y=15)
def click1():
word1 = combobox.get()
popped = ziped.pop(word1)
print(popped)
driver = webdriver.Chrome()
driver.get('http://www.google.com/')
time.sleep(5)
search_box = driver.find_element_by_name('q')
search_box.send_keys(popped)
search_box.submit()
time.sleep(5)
button1["command"] = click1 #関数と関連付ける
root.mainloop()
~~~~~~~~~~~~~~~~~~~~~
できればA2セル以降をプルダウンリストに使いたいのですが、
上手くいきませんでした(Google検索でヒットしませんでした。笑)
たまたまこの記事を見かけた詳しい方がいらっしゃいましたらご教授いただけると幸いです
さんゆり男子でした