これまで、Pythonの代表的な外部ライブラリであるopenpyxlを使用してPythonからExcelファイルを読み書きする方法については以下のように過去に何回か記載してきました。
通常のExcelファイル(xlsxファイルなど)についてはこれで問題ありませんでした。
ところが今回、またもやExcelファイルの読み書きで問題が発覚しました。
これまでは、ファイルクローズ中のファイルへの読み書きだったのですが、今回どうしてもオープン中のファイルへの読み書きが必要となりました。
これまで通り、openpyxlを使用してやると書き込み時に
「Permission error」
などが発生してできませんでした。
いろいろと調べていくうちになんとか実施する方法を見つけられたので備忘録として残しておきます。
やり方として、pywin32ライブラリを使用するというものです。
以下、その手順になります。
まずはじめに、pywin32ライブラリをインストールします。
pywin32ライブラリは標準ではインストールされていないため、pipコマンドでインポートします。
コマンドプロンプト(Macはターミナル)にて以下実施します。
pip install pywin32
次に、実際のpyファイルにて、ファイルの先頭で先程のライブラリ内にあるwin32comモジュールをインポートします。
import win32com.client
その後、Excelがすでに起動されている場合は、Getobjectを使用してExcelを取得します。
xl = win32com.client.GetObject(Class="Excel.Application")
そのExcelに対して、通常のExcel操作と同様に以下のように指定することでアクティブシートの「A12」へ"hello, world!"を書き込むことが出来ます。
xl.Range("A12").Value = "hello, world!"
全体としては以下のようになります。
import win32com.client xl = win32com.client.GetObject(Class="Excel.Application") xl.Range("A12").Value = "hello, world!"
ちなみに現在使用しているVisualStudioCodeのインストール方法などは過去記事に記載していますが以下になります。
関連記事:
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【selenium 備忘録】ボタンクリックで複数の新規ウインドウを開いた時新規ウインドウをアクティブにできなかった場合の対処方法例 - Django Girls and Boys 備忘録
【python】実行ファイル(EXEファイル)作成手順 - Django Girls and Boys 備忘録
【Python カレントディレクトリ取得】Excelファイル指定を使った簡単な例記載 - Django Girls and Boys 備忘録
【Pythonでopenpyxlを使用したExcelファイルの読み書き方法】xlsmファイル(マクロありファイル)の場合 - Django Girls and Boys 備忘録
【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録
【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール - Django Girls and Boys 備忘録
【Python Selenium】ブラウザ用ドライバーのインストール、設定とWebサイトへのアクセス方法 - Django Girls and Boys 備忘録
【ExcelマクロからのI.E.操作】I.E.のセキュリティに絡むエラー発生時の対応方法 - Django Girls and Boys 備忘録
【Python】キー入力によるプログラム終了処理、ループを抜けて次の処理へ移行する処理 - Django Girls and Boys 備忘録