SheetやRangeオブジェクトからブック名を取得する方法 – VBA

SheetやRangeオブジェクトからブック名を取得する方法
SheetやRangeオブジェクトから今開いているブック名って何だっけ?という時にParentを使ってWorkbookオブジェクトから取得します。
開いているブックが一つしかないのであれば、Thisworkbook.Nameで取得できます。

   Dim sht As Worksheet 'シートオブジェクト
   Dim rng As Range     'レンジオブジェクト

   Set sht = Workbooks("Book1.xlsm").Sheets("Sheet1")
   Set rng = Workbooks("Book1.xlsm").Sheets("Sheet1").Range("A1:B1")

   MsgBox rng.Parent.Parent.Name
   MsgBox sht.Parent.Name
Continue Reading

例外 try except – Python

例外処理

try:
    a = a / 100
except NameError:
    print("変数名エラー")
else:
    print("エラーが発生しなかったらここを処理")
finally:
    print("エラー処理終了1")


try:
    a = 100 / 0
except (ZeroDivisionError,TypeError):
    print("0割り、型変換エラー")
finally:
    print("エラー処理終了2")


try:
    raise SyntaxError # 例外を引き起こす

except Exception:
    print("構文エラー")

実行結果は続きを

Continue Reading

セット型 Set 集合 – Python

セット型 set 集合
重複しない要素がまとめてあるもの

ts1 = {10, 20, 30, 40, 50, 40, 60}
ts2 = set([10, 20, 100]) # set()でも生成できる。

print(ts1)  # 重複する要素40は、1つしかない
print(ts2)

ts1.add(70)
print(ts1)

ts1.discard(55) # 要素があれば削除し、要素がなければそのまま
print(ts1)
ts1.discard(50)
print("discard = ", ts1)


ts1.remove(70) # 要素がなければKeyErrorが発生
print("ts1 = ", ts1)
print("ts2 = ", ts2)

ts3 = ts1 - ts2 # 1にあって2に無い要素を返されます。
#ts3 = ts1.difference(ts2)
print("ts1.difference = ", ts3)

ts3 = ts1 | ts2 # ts1とts2の要素を結合し、一意の要素が残り返されます。
#ts3 = ts1.union(ts2)
print("ts1.union = ", ts3)

ts3 = ts1 & ts2 # ts1とts2の両方に存在する要素が返されます。
# ts3 = ts1.intersection(ts2)
print("ts1.intersection = ", ts3)

ts3 = ts1 ^ ts2 # ts1とts2のどちらかにしか存在しない要素が返されます。
# ts3 = ts1.symmetric_difference(ts2)
print("ts1.symmetric_difference = ", ts3)

ts1.clear()
print("after clear = ", ts1)

# ts1.pop() 要素がないとKeyErrorが発生

出力結果は続きを

Continue Reading

タプル型 tuple – Python

タプル型は、イミュータブルimmutableで要素の値が変更できません。

tp = (10,20,30)
print("tp[0] = ", tp[0])
print("tp    = ", tp)
# tp[0] = 50  エラーが起きる。タプルの値は変更できない。

tp2 = ([11, 22, 33],[55, 66, 77])
print("tp2 = ", tp2)

dlist = [100, 200, 300]
tp3 = tuple(dlist) #リストをタプル型に変換する
print("tp3 = ", tp3)


a = 50
b = 150
c = '250'
d = (a, b, c) #タプルパッキング
e, f, g = d  #アンパッキング
print("e = ", e)
print("f = ", f)
print("g = ", g)

出力結果は続きを….

Continue Reading

リストデータ型 list – Python

リストはミュータブルmutableなデータ構造で、異なるデータ型でも格納できます。

dlst2 = [10,'20',30,'40']
print(dlst2)
print( dlst2[-1])  # 最終データを出力 '40'
print( dlst2[2:] ) # 3つ目以降を出力 30, '40'

dlst3 = [10,20,30,10,50,100]
print( dlst3 )
print("count=", dlst3.count(10) ) # 指定された要素をカウントする
print("index = ", dlst3.index(50) ) # 要素の中で最初に出現する場所を返す

dlst3.append(150) # 要素を最後尾に追加
print("append = ", dlst3 )
dlst3.insert(4,30) # 要素を最後尾に追加
print("insert = ", dlst3 )
dlst3.remove(30) # 最初に出現する要素30を削除
print("remove = ", dlst3 )

dlst3.pop(2) # 3つ目の要素を削除
print("pop = ", dlst3 )

dlst4 = ['aaa','bbb']
dlst3 = dlst3 + dlst4 # リストに別のリストを追加
print("dlst3 + dlst4 = ", dlst3 )
dlst3.reverse() # リストの内容を逆順にする
print("reverse = ", dlst3 )

dlst3.clear() # 要素を全削除
print("clear = ", dlst3 )

# rangeを使ってリストを生成
dlst5 = list( range(0, 51, 10) ) 
print( dlst5 )

出力結果は続きを….

Continue Reading

ロギング(logging)サンプル – Python

ロギングのサンプル(logging)

デバッグや運用時のエラー等の運用で必要になるので調べました。

コンフィグでファイル出力やメール送信等もできるとのこと。
logging.basicConfig(filename=’apl.log’,level=logging.DEBUG)

import logging

# sampleloggerという名前のロガーを作成
outlog = logging.getLogger("samplelogger")

logsh = logging.StreamHandler()

#ログのローマットを設定
lformat = logging.Formatter('%(asctime)s [%(levelname)s] %(name)s %(message)s')
logsh.setFormatter(lformat)
outlog.addHandler(logsh)

# print("LogLevel(Default) = " , outlog.getEffectiveLevel()) 
# デフォルトのログレベルはWARNING(30)でした。
outlog.setLevel(logging.DEBUG) #ログレベルを10に設定

print("LogLevel(Set) = " , outlog.getEffectiveLevel() )

outlog.info("testlog info")
outlog.warning("testlog warning")
outlog.critical("testlog critical")
outlog.error("testlog error")
outlog.log(logging.ERROR,"testlog loglevel 30")

【出力結果】
LogLevel(Set) = 10
2016-12-07 03:08:07,363 [INFO] samplelogger test info
2016-12-07 03:08:07,363 [WARNING] samplelogger test warning
2016-12-07 03:08:07,363 [CRITICAL] samplelogger test critical
2016-12-07 03:08:07,364 [ERROR] samplelogger test error
2016-12-07 03:08:07,364 [ERROR] samplelogger test loglevel 30

※設定されているログレベルより低いレベルのログは、出力されません。

ログレベル数値定数
NOTSET0logging.NOTSET
DEBUG10logging.DEBUG
INFO20logging.INFO
WARNING30logging.WARNING
ERROR40logging.ERROR
CRITICAL50logging.CRITICAL
Continue Reading

ファイルの読み込み – Python

ファイルを読み取り場合の流れは、他の言語とほとんど変わりません。
1.ファイルをオープン
2.データの読み込み
3.ファイルをクローズ

ファイルオープンについては、open(ファイル名, モード, 文字エンコーディング)で開きます。
モードと文字コードは省略できますが、モードは”r”の読み取り、文字エンコーディングは”utf-8″が
デフォルトになります。

Continue Reading

Python用語・ミニ知識

わからなかった用語とかミニ知識が増えたら追加します。

イミュータブル[immutable]
固定の値を持ったオブジェクトで、変更できないオブジェクト
数値、文字列、タプル等

ミュータブル[mutable]
ミュータブルなオブジェクト
id()が変更されることなく、変更できるオブジェクト

PIP
Pythonのパッケージ管理システム

Continue Reading