0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】すべてのシートのアクティブセルと表示倍率を整える。

Last updated at Posted at 2021-04-18

pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、アクティブセルの設定と表示倍率に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

納品書だったり、見積だったり、発注書だったり
一つの企業様に様々な書類を纏めて送る場合もあると思います
作成中は倍率を変更していたりするので
発送する前に体裁を整える場合も多いと思います。

今回はサンプルと言う名前のブックにある全てのシートを
決められたセル(今回はアクティブセルをA1)、
元の倍率(今回は100%)に整えるコードを記述してみます。

最終的なコード

from openpyxl import load_workbook

wb = load_workbook('サンプル.xlsx')

cell_no = 'A1'
zoom_scale = 100

# 全シートを取得して1シートずつ設定
for ws in wb.worksheets:
    sv = ws.sheet_view
    # アクティブセルを'A1'に設定
    sv.selection[0].activeCell = cell_no
    sv.selection[0].sqref = cell_no
    sv.selection[0].activeCellId = None
    # 表示倍率を100%に設定
    sv.zoomScale = zoom_scale
    sv.zoomScaleNormal = zoom_scale

wb.save('サンプル_修正.xlsx')

アクティブセルに関しては
activeCell属性を設定すると同時に、sqref属性と、activeCellIdを
表示倍率に関しても
zoomScale属性を設定すると同時に、zoomScaleNormal属性を
それぞれ設定しておいた方が良いようです。
ブック内の情報整合性を保つために必要な様なのですが、
「なぜか」にたどり着けず、もやもやしている状態です。

今は、セットで変更するものと覚えておいて、理由が理解出来たら追記したいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?