Python インストールしてないPCでは動作しない。
xlwings のインストールも必要。
ということで、Python インストールしている人にしかお奨めしない Excel VBA から実行するもの。
Excel VBA は、筆者はまったく理解していない≒初心者≒素人です。
今回、Excel の作成を紹介します。
Excel 準備
ボタンを配置してVBAマクロを記述するために、Excel のオプションを開いて、
「リボンのユーザ設定」で、「メインタブ」の「開発」をチェックONにします。
メニューに「開発」が出るので、「開発」→ VisualBasic で、VBA のウィンドウが開きます。
開いたら、Python の xlwings モジュールをインポートします。
(前提: xlwings は、 pip でインストール済 )
xlwings がインストールされているフォルダ、
Python の Lib の下の site-packages
Pythonインストールフォルダ\Lib\site-packages
に、xlwings フォルダがあり、その下に、xlwings.bas があるはずです。
xlwings.basをインポートします。
VBA プロジェクトの標準モジュールフォルダに、xlwings が追加されます。
Python コードの準備
snakecamel.py
変換対象、書込み対象の文字列は、B列とD列で書いてます。
# -*- coding: UTF-8 -*- import xlwings as xw def toCamelCase(string, titleCase=False): import re if titleCase: return ''.join(x.title() for x in string.split('_')) else: return re.sub("_(.)", lambda m:m.group(1).upper(), string.lower()) def toSnakeCase(string, upper=False): import re if upper: return re.sub("(.[A-Z])", lambda x: x.group(1)[0] + "_" + x.group(1)[1], string).lower().upper() else: return re.sub("(.[A-Z])", lambda x:x.group(1)[0] + "_" +x.group(1)[1], string).lower() def writeCamel(): sheet = xw.sheets[0] if sheet.range('B1').value: for i in range(4, sheet.range('B3').current_region.last_cell.row + 1): snakestr = sheet.range("B%d" % i).value sheet.range("D%d" % i).value = toCamelCase(snakestr, True) else: for i in range(4, sheet.range('B3').current_region.last_cell.row + 1): snakestr = sheet.range("B%d" % i).value sheet.range("D%d" % i).value = toCamelCase(snakestr) def writeSnake(): sheet = xw.sheets[0] if sheet.range('D1').value: for i in range(4, sheet.range('D3').current_region.last_cell.row + 1): camelstr = sheet.range("D%d" % i).value sheet.range("B%d" % i).value = toSnakeCase(camelstr, True) else: for i in range(4, sheet.range('D3').current_region.last_cell.row + 1): camelstr = sheet.range("D%d" % i).value sheet.range("B%d" % i).value = toSnakeCase(camelstr)
Excel のつづき、
ボタンを用意します。
ボタンクリックの関数名を設定して、「新規作成」を押して、
Python 呼出しの記述を行います。
Call RunPython で、
import Pythonファイル名拡張子を除く。
↑の名称 + "." ドット + メソッド
で呼び出します。
Excel 全体は以下のようなものです。
チェックボックスは、コントロールの書式設定
→ コントロールタブで反映先を設定すると、
真偽値(TRUE/FALSE)が入るので反映先は、隠れる場所に配置します。