質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

13127閲覧

PythonでExcelアプリケーションを閉じる方法を教えてください。

YUKI_B

総合スコア77

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2018/11/22 01:40

編集2018/11/22 02:43

前提・実現したいこと

Pythonでエクセルのアプリケーションを閉じたいのですが書き方がわかりません。

発生している問題・エラーメッセージ

c:\python>python renshu9.py Traceback (most recent call last): File "renshu9.py", line 16, in <module> book.Close('aaa.xlsx') AttributeError: 'Workbook' object has no attribute 'Close'

該当のソースコード

python

1import subprocess 2import openpyxl as px 3import win32com.client 4 5book = px.load_workbook('aaa.xlsx') 6sheet = book.active 7 8EXCEL = r'aaa.xlsx' 9 10subprocess.Popen(['start',EXCEL], shell=True) 11# 12sheet.cell(row=1, column=3, value=13) 13 14book.save('aaa.xlsx') 15 16book.Close('aaa.xlsx')

試したこと

sheetやbookには閉じるプログラムがないことは気付きましたが
どこを指定して閉じるのかがわかりません.

補足情報(FW/ツールのバージョンなど)

Python3.7.1

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

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

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

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

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

can110

2018/11/22 02:38

openpyxlで編集中に同じファイルをExcelで開いている(が、編集結果は反映されていない)意図は何でしょうか?本来やりたいことを記載すると適切な回答得られやすくなります。
YUKI_B

2018/11/22 02:44

大変失礼いたしました。セーブ箇所のコメントアウトを解除していませんでした。
guest

回答2

0

.closeではファイルパスは指定できませんし、修正した結果はファイルに反映されません。代わりに.saveを呼ぶ必要があります。

また、Pythonでエクセルのアプリケーションを閉じたい

startコマンドで起動したExcelアプリケーションおよび開かれたファイルは、Python側から終了することはできません。

本来やりたいことは以下のようなことでしょうか?

Python

1import openpyxl as px 2#import win32com.client 3 4# aaa.xlsxを開いて内容を修正する 5EXCEL = r'aaa.xlsx' 6book = px.load_workbook(EXCEL) 7sheet = book.active 8sheet.cell(row=1, column=3, value=13) 9book.save(EXCEL) # 保存が必要! 10#book.close() # 不要 11 12# 修正された内容をExcelで確認 13# 起動したExcelはユーザーが自分で閉じること! 14import subprocess 15subprocess.Popen(['start',EXCEL], shell=True)

投稿2018/11/22 02:47

編集2018/11/22 02:49
can110

総合スコア38260

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

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

YUKI_B

2018/11/22 03:05 編集

回答いただきありがとうございます。 今回の実験の主目的は"Pythonから指定したExcelファイルを開き、それを閉じることは可能かどうか"ということが知りたかったのです。 詳細に話しますと今現状エクエルの表にスイッチを作り、そこからPythonのスクリプトを実行させ値を入力するというプログラムを作っています。 しかし現状該当のエクセルが閉じていないと値が入力されません。 対処方法がわからなかったので、Pythonプログラムの最初の方でエクセルを閉じ、 最後に指定したプログラムを再起動させるというプロセスを考えて居ます。それの前段階として、この「Python経由でアプリケーションを閉じる」というテストプログラムを作成しようと考えていたところ、どうにもうまくいかなくて今回質問をさせていただきました。
guest

0

ベストアンサー

Python

1book.Close()

ではなく

Python

1book.close()

ではないのか

投稿2018/11/22 02:01

yamato_user

総合スコア2321

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

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

YUKI_B

2018/11/22 02:40

回答いただきありがとうございます。。 訂正しましたところ File "renshu13.py", line 16, in <module> book.close('aaa.xlsx') TypeError: close() takes 1 positional argument but 2 were given というエラーがでたのですが、これはどう対処すればよいのでしょうか?
yamato_user

2018/11/22 02:50

book.close()だけでいいはずです。 エラー内容を和訳してみましょう > TypeError: close() takes 1 positional argument but 2 were given >「close関数は任意の1つの引数を取るが、2つ与えられている」 なので引数を一つ減らしてやります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問