カテゴリー: 基本

  • 【ダイアログ表示】ファイル選択画面(ポップアップ)を開いて処理するファイルを選ぶ

    ファイルを操作するプログラムを作成する際、フルパスをコードに直接記述すると対象ファイルが変わるたびにコードの書き換えが必要になります。
    そこでここでは「tkinter」を使いファイル選択の画面からファイルを選ぶ方法を紹介します。

     

     

    1.アウトプット

    今回は対象のファイルをファイル選択画面から選ぶようなコードに書き換えます。。

     

    2.コードの紹介

    コードは次のようになります。動作は以前紹介したものと同じになりますが、今回は最後の完成ファイルもすでにファイルがあり選択するようになっています。もしもファイルを新規作成する仕様にしたい場合は、ファイルパスを書くようにしてください。

    import openpyxl
    from openpyxl import load_workbook
    import tkinter.filedialog
    import 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 += 1
    wb2.save(filename=filepath3)

    ファイルをフォルダから選択させるには次のように書き、選択肢にファイルの種類を指定してそれ以外は表示されないようにすることが出来ます。
    第一引数のはご自身が分かるように自由に書いて大丈夫です。

    tkinter.filedialog.askopenfilename(filetypes=[(‘Excelファイル’,’*.xlsx’)])

    第一引数に選択肢の説明、第二引数に拡張子を書きます。以下、例をいくつか紹介します。
     [(“すべてのファイル”, “*”)]
     [(“Excelファイル”, “*.xlsx”)]
     [(“CSVファイル”, “*.csv”)]
     [(“PDFファイル”, “*.pdf”)]
     [(“テキストファイル”, “*.txt”)]

     

    3.終わりに

    今回はプログラム中でファイルを指定する際にフォルダから選択できる「tkinter」を使った事例を紹介しました。ファイルパスを指定しないので他の人が違うファイルを操作する場合にもコードの書き換えが不要など、使い勝手がいいと思うのでぜひ活用してください。