Home » Python » pywin32・win32comの使い方 » pywin32を使ってExcelのセルにデータを入力する

pywin32を使ってExcelのセルにデータを入力する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2008 ビルド13127.20408 Microsoft Store)+ Python 3.8.3 + pywin32 228

「pythons win32com エクセル セル 入力」
といった検索キーワードでアクセスがありました。

pywin32ライブラリを使って、Excelのセルにデータを入力するには、どのようなPythonのコードを書けばいいのか探していた方による検索でしょう。

[スポンサードリンク]

pywin32を使ってセルにデータを入力するサンプル

Excelを起動しておいてから、以下のようなコードを実行すると、アクティブシートのA1セルに数値「123」、A2セルに文字列「xyz」が入力されます。

import win32com.client
xl_app = win32com.client.GetObject(Class='Excel.Application')
xl_app.Range('A1').Value = 123
xl_app.Cells(2, 1).Value = 'xyz'

上記のコードを、拙著『VBAユーザーのためのPython超入門』でも多用しているIDLEのShellウィンドウから実行する様子を、動画にしています。よろしければご覧ください。→ YouTube「pywin32を使ってExcelのセルにデータを入力する」


サンプルで行っている処理について

ここでは、起動済みExcelへのデータ入力を行うために、
  xl_app = win32com.client.GetObject(Class='Excel.Application')
と、win32com.clientのGetObject関数を使っています。

もしも新規にExcelを起動したいのならば、
  xl_app = win32com.client.Dispatch('Excel.Application')
  xl_app.Visible = True
  xl_app.Workbooks.Add()
のようなコードにしてください。

データを入力するコードはExcel VBAと似ている

Excelへの参照を取得した後の、
  xl_app.Range('A1').Value = 123
  xl_app.Cells(2, 1).Value = 'xyz'
の部分は、Excel VBAを理解できていれば難しくないでしょう。

ExcelのApplicationオブジェクトに用意されているRangeプロパティで、A1セルを表すRangeオブジェクトを取得し、
  xl_app.Range('A1').Value = 123
  
RangeオブジェクトのValueプロパティを使って数値データを入力しています。
  xl_app.Range('A1').Value = 123

つづいて、ApplicationオブジェクトのCellsプロパティで、全セルを表すコレクションとしてのRangeオブジェクトを取得し、
  xl_app.Cells(2, 1).Value = 'xyz'

Rangeオブジェクトの既定プロパティを使ってA2セルを表すRangeオブジェクトを取得して、
  xl_app.Cells(2, 1).Value = 'xyz'

やはりRange.Valueプロパティを使って文字列データを入力しています。
  xl_app.Cells(2, 1).Value = 'xyz'

Excel VBAで書くならば、
  Dim xl_app As Application
  Set xl_app = Application
  xl_app.Range("A1").Value = 123
  xl_app.Cells(2, 1).Value = "xyz"
といったコードです。

[スポンサードリンク]

Home » Python » pywin32・win32comの使い方 » pywin32を使ってExcelのセルにデータを入力する

「pywin32・win32comの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.