トップページ | 2009年11月 »

2009年10月

数える! ワード、エクセル

ワードやエクセルの行数や文字数をカウントするのに、

適当なツールを探していたところ、

とある人から、

”かぞえチャオ”というツールがあることを、

教えてもらった(↓)。

http://homepage2.nifty.com/fortissimo/

このツール、なかなか優れもので、

ワード、エクセルだけじゃなく、

pdfやC/C++などのソースコードにも、

対応しているらしい。

このツールの姉妹品に、

”ここみチャオ”や、

”どれみチャオ”などがあり、

統一感のある製品名も、

いい感じです。

★WOZ★

| | コメント (0) | トラックバック (0)

VBA!3行マクロの作り方

さて実は、

その「たった3行 エクセルマクロ事典」には、

マクロの簡単な作り方も紹介されていて、

「マクロは便利そうだけど、プログラミングはちょっと。。。」

という人も安心です。

その手順は、次の2段階です。

  1. エクセルの操作を記録して、
  2. その記録を修正してマクロ化する

エクセルには、

シートやセルを選んだり、

セルに何か書き込んだりする操作を、

記録する機能があります。

その機能を使って、

とりあえずマクロ化したい操作を実際にやってみます。

例えば、

  1. "Sheet1"を選んで、
  2. "Sheet1"の名前を"テスト"にする
 

という操作をしてみます。

すると、

こんな(↓)ふうに記録されます。(25ページ〜27ページから引用)

Sub シート名を選択セルの文字に()

Sheets("Sheet1").Select

Sheets("Sheet1").Name = "テスト"

End Sub

できてますね。

しかし、

このままだと、いつも使えるわけではないので、

  1. 「"Sheet1"を選んで」の部分はマクロから外し、
  2. 「”Sheet1”の名前」を「選択しているシートの名前」に変えて、
  3. 「"テスト"」を「選択しているセルの値」にします

するとマクロのコードは、

Sub シート名を選択セルの文字に()

ActiveSheet.Name =ActiveCell.Value

End Sub

となります。

これで、

「選択しているセルの値を、そのシートの名前にする」マクロができました。

このプログラミング方法は、

知っている人は普通につかっている方法だと思います。

かなりお手軽な上に、直感的です。

そんなわけで、このVBAマクロですが、

プログラミングの勉強を始めるきっかけとしても、

結構いいなぁと思います。

★WOZ★

エクセルマクロ事典 (日経BPパソコンベストムック)Bookエクセルマクロ事典 (日経BPパソコンベストムック)

著者:日経PC21
販売元:日経BP社
Amazon.co.jpで詳細を確認する

| | コメント (0) | トラックバック (0)

エクセルとマクロ

最近買ったもので、

とてもお得だったのが、

「たった3行 エクセルマクロ事典」です。

さて、この本、

一言でいうと、

VBAマクロのコード・スニペット(VBAマクロの断片)集です。

例えば、

A1セルの文字列をシート名にするなら、

ActiveSheet.Name = Range("A1").Value

と書くとか(98ページから引用)、

選択シートの右側にシートを挿入するなら、

Sheets.Add After:=ActiveSheet

と書くとか(96ページから引用)、

という具合にコード・スニペットが掲載されています。

というわけで、VBAマクロを普段から使っているんだけど、

あれ、何て書くんだっけ?

という時に、

手元にあると便利だ、

という本です。

★WOZ★

エクセルマクロ事典 (日経BPパソコンベストムック)Bookエクセルマクロ事典 (日経BPパソコンベストムック)

著者:日経PC21
販売元:日経BP社
Amazon.co.jpで詳細を確認する

| | コメント (0) | トラックバック (0)

エクセルとPython

エクセルファイルの操作にVBAを使っている人は多いと思います。

僕も使っています。

ちょっとした自動化に便利です。

でもVBAマクロで、少し大きめのプログラムを作るのは嫌だなぁ、と思い、

それならPythonでやってみようと、調べてみました。

その結果、

CPythonなら、xlutils+xlrd+xlwtの組み合わせが良さそうです。

これらのライブラリはクセのない自然な感じで使えます。

また、

IronPythonなら、標準のまま使えます。

こちらは独特の書き方ですが、慣れてしまえば大丈夫そうです。

どちらもPython3.xではなく、Python2.xに対応しています。

★WOZ★

| | コメント (0) | トラックバック (0)

D.R.Yと継承

ソフトウェア工学の原則の一つに「D.R.Y原則」があります。

D.R.Yとは”Don't repeat  yourself"のことで、

「同じことを繰り返すな!」という意味です。

オブジェクト指向プログラミング言語では、

クラスの継承にこの原則が使われています。

例えば、下のコードは、犬型ロボットと猫型ロボットをつくって、

自己紹介をさせてみようというコードを、

Pythonで書いたものです。

//ここから
class Dog:
    def __init__(self, name):
        self.name = name
        self.cryWord = "Bow-wow"

    def cry(self):
        print ("{0}, I am {1}.".format(self.cryWord, self.name)) 

class Cat:
    def __init__(self, name):
        self.name = name
        self.cryWord = "Mew"

    def cry(self):
        print ("{0}, I am {1}.".format(self.cryWord, self.name))   

if __name__ == '__main__':
    pochi = Dog("Pochi")
    tama = Cat("Tama")

    myPets = [pochi, tama]

    for pet in myPets:
        pet.cry()
//ここまで

実行すると、

Bow-wow, I am Pochi.
Mew, I am Tama.

と、犬型ロボットの"Pochi"と猫型ロボットの"Tama"が自己紹介をしました。

さて、

上のコードを見てみると、

同じような処理をしているコードが重複しています。

両方のクラス(DogとCat)に同じ修正を加える場合に、

どちらかを修正し忘れてしまいそうです。

そこで、この後、オブジェクト指向の教科書や講座では、

犬型ロボットも猫型ロボットも同じ”動物型”ロボットなのだから、

動物型クラス(Animal)をつくって、そこから犬型クラスと猫型クラスを継承させよう、

となるわけです。

で、例えば、この話を聞いた新人プログラマくんたちは、

オブジェクト指向の「継承」が重要概念なんだな、

と思い込むのですが、

それはちょっと違うんだけど、という

この話の続きはまた今度。

★WOZ★

| | コメント (0) | トラックバック (0)

トップページ | 2009年11月 »