#エクセルの名前で定義されたセル範囲を読みこむ Python VBA
作業イメージ
1,エクセルにの名前で定義されたセル範囲に 開始日付・終了日付、プルダウンでの選択項目などの情報がある
2,エクセルの名前で定義された範囲は2.3行程度
3,店舗ごとの繰り返し処理など多量のデータはシートから読み込む 以前のメモ
4,pythonはOpenPyxLモジュール を使っている
5,スクレイピングに必要なデータはエクセルから読みこむとする
##python でエクセルの名前で定義されたセル範囲を読み込む
エクセルの名前は「テスト用名前範囲 」
エクセルファイル名は 「テスト.xlsx」 とする
ブックレベルの名前を使うものとする(シートレベルで同じ名前のないように)
import openpyxl
wb=openpyxl.load_workbook('テスト.xlsx')
my_range = wb.defined_names['テスト用名前範囲']
dests = my_range.destinations
cells = []
for title, coord in dests: #titleにはシート名 がとれています。
ws = wb[title]
cells.append(ws[coord])
C=[]
for row in cells:
for aa in row:
C.append([col.value for col in aa])
C はリストのリストになっているのでエクセル名前範囲の一番左上のセルは
C[0][0] で使えます。
名前範囲が小さいときはこれで結構使えます。
##エクセルVBAで名前で定義されたセル範囲を読み込む
Variant型変数にセル範囲を入れるとC(1,1) のように使えます。
pythonと違い 1から始まります。
エクセルは同時にたくさんのファイルを開いたり、運用がぐちゃぐちゃのことが多いので
ブック→シート→名前で指定した方が安心です。
Dim C As Variant
'メニューシートにテスト用名前範囲がある
C = ThisWorkbook.Sheets("メニュー").Range("テスト用名前範囲")
C(1, 1)で一番左上セルの値を取得できます。
エクセルの名前をこまごまと読み込めたらスクレイピングの運用が楽になります。