質問するログイン新規登録
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

350閲覧

Python Tkinter PowerPointfileの開き方

kashinomori

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2025/06/30 06:34

編集2025/06/30 07:51

0

0

実現したいこと

Tkinterの画面にて、所定に格納しているpptx(or pptm)ファイルをクリックと同時に開きたいです。
自分で調べたりcopilotに聞く内容をもとに以下のコードまではたどり着けましたが、どうしても以下のエラーメッセージとなり開けません。できればpptm、難しければpptxファイルの開き方をお教えください。
コードはダイアログとなってますが、できればダイレクトに開きたいです。

発生している問題・分からないこと

ファイルを開けませんでした。エラー[Errno 2] No such file or direcory:'test.pptx'
イメージ説明

エラーメッセージ

error

1ファイルを開けませんでした。エラー[Errno 2] No such file or direcory:'test.pptx'

該当のソースコード

#pip install python-pptx#インストール済です import tkinter as tk from tkinter import filedialog, messagebox from pptx import Presentation def open_pptx(): # ファイル選択ダイアログを開く file_path = filedialog.askopenfilename( filetypes=[("PowerPoint Files", "*.pptx"), ("All Files", "*.*")] ) if file_path: try: # PowerPointファイルを開く presentation = Presentation(file_path) slide_count = len(presentation.slides) with open('test.pptx', 'r', encoding='utf-8') as file: content = file.read() print(content) # ここでファイルの内容を処理 except Exception as e: messagebox.showerror("エラー", f"ファイルを開けませんでした。\nエラー: {e}") # Tkinterウィンドウの作成 root = tk.Tk() root.title("PowerPointファイルを開く") # ボタンの作成 open_button = tk.Button(root, text="PowerPointを開く", command=open_pptx) open_button.pack(pady=20) # ウィンドウの表示 root.mainloop()

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

copilitなどでコードを確認しました。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakaiY

2025/06/30 06:52

> pptx(or pptm)ファイルをクリックと同時に開きたいです。 何がしたいのですか? 言いかえると、どういうことが起こることを期待していますか?
kashinomori

2025/06/30 07:52

毎度ありがとうございます!いま実行後の画像を追加しましたが、このpowerpointのボタンをクリックすると、ローカルフォルダに保管しているpptxファイルを開くようにしたいです。
TakaiY

2025/06/30 08:02

> pptxファイルを開くようにしたい この「pptxファイルを開く」がどうなることを想定しているかです。 質問のコードの 「presentation = Presentation(file_path)」で指定したpptxファイルは開いているはずなのですが、たぶんそうとは認識されていませんよね?
kashinomori

2025/06/30 12:19

失礼いたしました。上記を参考に途中を以下の通り組みなおしてみました。結果、エラーは出ないようになりましたが、実行中[*]となったままでpptxは開かれません。 def open_pptx(): # ファイル選択ダイアログを開く file_path = filedialog.askopenfilename( filetypes=[("PowerPoint Files", "*.pptx"), ("All Files", "*.*")] ) if file_path: # PowerPointファイルを開く presentation = Presentation("C:\\###.pptx")
Eggpan

2025/06/30 13:58

「pptxが開かれる」ということに関して、powerpointが起動してファイルが表示される、みたいなものを期待していたりしませんか? Presentationはファイルの中身のテキストや画像を取得することは出来ますが、それをtkinterの画面に表示したいのであればそのコードは自分で書く必要がありますよ。 powerpointを開きたいのであればtkinterを利用するのではなく、subprocessで普通にpowerpointを起動するなどが必要かと思います
kashinomori

2025/06/30 14:27

Eggpanさま、言語化してくださりありがとうございます。はい、まさしくそれを期待しておりました。 想定としては、tkinterの画面上にリンクをつけパワーポイントを直接開くようにしたかったのですがそれはできないということでしょうか。
melian

2025/06/30 15:09

Windows OS であれば os.startfile() を利用するとよいかと思います。 os.startfile(path[, operation][, arguments][, cwd][, show_cmd]) https://docs.python.org/3/library/os.html#os.startfile > Start a file with its associated application.
kashinomori

2025/07/01 02:19

melianさん、いつもありがとうございます。os.startfile()を試したところ問題が解決しました! ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
kashinomori

2025/07/01 02:19

皆様もご回答いただきどうもありがとうございました。
melian

2025/07/01 03:52 編集

> kashinomori さん Copilot の提示したコードが PowerPoint ファイルを直接読み込む様なものになっていることを考慮すると、プロンプトが不適切であった可能性が高いと思われます。Copilot を利用していないので確かなことは判りませんが、例えば「ボタンをクリックすると PowerPoint を起動して指定のファイル(*.pptx)を読み込む様なコードを教えてください」と入力していれば os.startfile() を使用したコードが提示されたのではないかと思います。 > ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか? 自己回答&BAでよいかと思います。
kashinomori

2025/07/01 05:51

ありがとうございます。takaY様からもご指摘と同様かと思いますが、「ボタンをクリックすると PowerPoint を起動して指定のファイル(*.pptx)を読み込む様なコードを教えてください」 この認識をしっかりもちたいと思います。ありがとうございました。
guest

回答1

0

何の脈絡もなく出てくる以下のコードが原因だと思います。
python-pptx使ったことはありませんが、この処理はこれより上の部分とまったく整合性が取れていません。

python

1 with open('test.pptx', 'r', encoding='utf-8') as file: 2 content = file.read() 3 print(content) # ここでファイルの内容を処理

このコードの前に、slide_count = len(presentation.slides)でスライドの数を数えていますが、そのあとも、python-pptxの作法にしたがって処理する必要があります。


処理をtry-exceptで囲んでいますが、以前にも書いたとおり、try-exceptは例外が発生する原因がわかっていて、対処も決っているときのみ使うものです。そうでないときに使うと、プログラムの問題が隠れてしまい、デバッグ等がしにくくなります。

投稿2025/06/30 06:46

編集2025/06/30 07:16
TakaiY

総合スコア14629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kashinomori

2025/06/30 07:54

こちらもありがとうございます。copilotの情報をほぼ修正せず貼り付けてしまいました。pptxファイルの開き方がどこにも情報がなく、この度相談させていただきました。
TakaiY

2025/06/30 08:04 編集

コメントにも書きましたが、 「pptxファイルの開き方」にある、「開く」とはどういうことが起きることを想定していますか? ちなみに、CopilotでもChatGPTでもコードは書いてくれますが、何が書いてあるのかわからないのであれば、書けたことにはなりません。
TakaiY

2025/07/01 03:58

直接書かないでコメントしていましたが、検索するにしてもAIのサポートを得るにしても、自分がしようとしていることはどういうことなのかを正しく表現できるようになることが必要です。 Windowsで「pptファイルを開く」をするとPowerPointが立ち上がって目的のファイルを開いてくれますが、Windowsの作法ではそうなるのであって、プログラミングではファイルを開くというのは、そのファイルの中身をそのプログラムで扱えることを表わします。 Windowsと同様のことをプログラムでしたいのであれば、「ファイルを指定してPowerPointを立ち上げる」あたりでしらべるといいでしょう。
kashinomori

2025/07/01 05:49

ありがとうございます。もっと自走力を鍛えるように日々鍛錬したいと思います。今後ともご指導ご鞭撻のほどよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問