ネットコードの途中でファイルを選択する際、コードと同じ階層にあるファイル名のみを記載するものが多いと思います。しかしそれだと違うファイルを操作する度にコードを書き直さなくてはいけません。
そこでここでは「tkinter」を使いファイル選択の画面からファイルを選ぶ方法を紹介します。
1.アウトプット
まずはアウトプットについて説明します。以前に指定範囲の表データを別データに書き込む方法を紹介しましたが、その際にサンプルデータとフォーマットデータに保存先のパスを書いていました。
今回は対象のファイルをファイル選択画面から選ぶようなコードに書き換えます。。
2.コードの紹介
コードは次のようになります。動作は以前紹介したものと同じになりますが、今回は最後の完成ファイルもすでにファイルがあり選択するようになっています。もしもファイルを新規作成する仕様にしたい場合は、ファイルパスを書くようにしてください。
import openpyxlfrom openpyxl import load_workbookimport tkinter.filedialogimport tkinter as tk#tkinterを動作させる基盤のウインドウ作成&非表示root = tk.Tk()root.withdraw()#読み込み先、書き込み先、完成のファイル選択filepath1 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])filepath2 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])filepath3 = tkinter.filedialog.askopenfilename(filetypes=[('Excelファイル','*.xlsx')])#それぞれのファイルパスに上記で選択したファイルを代入wb1 = openpyxl.load_workbook(filename=filepath1)ws1 = wb1['サンプル']wb2 = openpyxl.load_workbook(filename=filepath2)ws2 = wb2['フォーマット']for i in range(1,7): for j in range(1,7): copy = ws1.cell(row = i, column = j).value ws2.cell(row = i+2, column = j, value = copy) j += 1 i += 1wb2.save(filename=filepath3)
ファイルをフォルダから選択させるには次のように書き、選択肢にファイルの種類を指定してそれ以外は表示されないようにすることが出来ます。
第一引数のはご自身が分かるように自由に書いて大丈夫です。
tkinter.filedialog.askopenfilename(filetypes=[(‘Excelファイル’,’*.xlsx’)])

第一引数に選択肢の説明、第二引数に拡張子を書きます。以下、例をいくつか紹介します。
[(“すべてのファイル”, “*”)]
[(“Excelファイル”, “*.xlsx”)]
[(“CSVファイル”, “*.csv”)]
[(“PDFファイル”, “*.pdf”)]
[(“テキストファイル”, “*.txt”)]
3.終わりに
今回はプログラム中でファイルを指定する際にフォルダから選択できる「tkinter」を使った事例を紹介しました。ファイルパスを指定しないので他の人が違うファイルを操作する場合にもコードの書き換えが不要など、使い勝手がいいと思うのでぜひ活用してください。

コメントを残す