トップページtech
1001コメント373KB

Excel VBA質問スレ Part8

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2008/08/25(月) 23:16:33
ExcelのVBAに関する質問スレです

前スレ http://pc11.2ch.net/test/read.cgi/tech/1212587819/

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。
   
 VBAとは、『Visual Basic for Application』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。 
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)
0871デフォルトの名無しさん2008/11/18(火) 21:16:34
>>869
ADODB.Stream
0872デフォルトの名無しさん2008/11/18(火) 21:23:24
>>870
Dim a As Byte
a = 5
Do Until Cells(a, 5).Value = ""
Cells(a, 3).Interior.ColorIndex = 10
a = a + 1
If a = 16 Then
Exit Do
End If
Loop
0873デフォルトの名無しさん2008/11/18(火) 21:45:15
>>870
byte型宣言はいくらなんでも無いんじゃないかな・・・。
aの使用目的が行数って分かってるんだし、そこはlongに宣言すべきだと思うんだけど。

Dim i As Long
For i = 5 To Cells(5, 5).End(xlDown).Row
Range(Cells(i, 3), Cells(i, 15)).Interior.ColorIndex = 10
Next

短い構文でも同じ処理は出来るんでないかな。
0874デフォルトの名無しさん2008/11/18(火) 22:07:13
870って無限ループじゃないの
0875デフォルトの名無しさん2008/11/18(火) 22:07:40
Range(Cells(5, 5), Cells(5, 5).SpecialCells(xlCellTypeLastCell)).Offset(, -2).Resize(, 13).Interior.ColorIndex = 10
こうか?
0876デフォルトの名無しさん2008/11/19(水) 00:36:24
>>874
255行でオーバーフローで止まる方式
0877デフォルトの名無しさん2008/11/19(水) 08:47:21
>>874の説明でなぜかものすごく納得してしまったw
08788772008/11/19(水) 08:48:08
安価ミス>>876だった
0879デフォルトの名無しさん2008/11/19(水) 10:18:22
>>871
どうもありがとう^^
メモリ不足で四苦八苦してたけど.LineSeparator追加で何とか出来た。ヽ(´ー`)ノ
ttp://www.cocoaliz.com/excelVBA/index/41/
0880デフォルトの名無しさん2008/11/19(水) 10:30:40
Const adLF = 10 宣言しなくても出来ちゃったんだけど問題ないのかな?
0881デフォルトの名無しさん2008/11/19(水) 13:46:56
参照設定したんならいらないでしょ
0882デフォルトの名無しさん2008/11/20(木) 10:23:07
どうして?
0883デフォルトの名無しさん2008/11/20(木) 11:21:57
参照先で宣言されてるから
0884デフォルトの名無しさん2008/11/20(木) 13:59:13
なるほど、
ADODB.Streamが良く分らなくても動いて良かったです^^
0885デフォルトの名無しさんNGNG?2BP(1028)

automation error
The object invoked has disconnected by the client

これ、どうやって解析したらいいの?
ユーザフォームからFiledialogでファイルを開くと 出るんだけど・・・
で、そのうちFM20.dllでメモリアクセスバイオレ〜ションになる
0886デフォルトの名無しさん2008/11/22(土) 20:17:54
CreateObjectでIEのフォーム送信を操作して、
帰ってきたページのリンク先の情報を取得したいと思ってます

Debug.Print objIE.Document.Links.Length で見ると値は4なので
フォーム送信前のリンク先の総数は4だと分かるんですが、
送信後に帰ってきたページのそれの総数(その他もですが)の取得ができません

set objIE = Nothing で一度解放してから再度
CreateObject("InternetExplorer.application") でバインドするだけでは駄目なのでしょうか
"システムエラーです: &H800004005 (-214767259) エラーを特定できません"
というエラーが出てしまいます

あともうちょいの様な気がしますので、どなたかご教示お願いします
0887デフォルトの名無しさん2008/11/22(土) 21:39:47
なんでわざわざ解放するの?
08888862008/11/22(土) 21:43:56
>>887
きちんと取得できるのであればわざわざしないので、
取得方法を教えて頂きたいのですが…
0889デフォルトの名無しさん2008/11/22(土) 22:16:44
>>888
読み込み終わるまでウェイトは入れてる?
08908862008/11/22(土) 22:30:48
>>889
一応前後に1回ずつ入れてます。こんな感じでしょうか
READYSTATE_COMPLETE = 4 をWhie〜Wendでループさせて待ってるので合ってると思いますが…

Debug.Print "objIE.Document.Links.Length = " & objIE.Document.Links.Length ←リンクの数(=4)
Call WaitBrowserResponce ←ウェイト
With objIE.Document.Forms("SQL_FROM") 'フォームにSQLのコマンド(WSQL)をぶち込む
.Item("SQL").Value = WSQL
.submit
End With
'ここでフォーム送信されます
Call WaitBrowserResponce ←ウェイト
Debug.Print "objIE.Document.Links.Length = " & objIE.Document.Links.Length ←こいつが4のまま

ここでリンクの数を再取得(前のページのでなく新しいページのが欲しい)したいのです
08918862008/11/22(土) 22:32:45
念のためIEのウェイト処理をば

Private Sub WaitBrowserResponce() 'IEの処理が終わるまで待機

While objIE.ReadyState <> 4 'READYSTATE_COMPLETE = 4
Debug.Print ".ReadyState = " & objIE.ReadyState
Debug.Print ".Busy = " & objIE.Busy
While objIE.Busy = True
DoEvents
Wend
Wend
Debug.Print "------------------------" ←単なるイミディエイト窓の区切りです

End Sub
0892デフォルトの名無しさん2008/11/22(土) 23:41:05
他のxlsファイルを開きたいんだけど、想定されるフルパスが特定できないので、今開いてるxlsからの相対参照したいんだけど、マクロの記録でやると絶対参照で記録されるよね;;
相対参照ってどう記述すればいいんでしょう
0893デフォルトの名無しさん2008/11/23(日) 06:31:45
>>892
まず、chdir thisworkbook.path で今開いてるブックのフォルダに移動してから

同じフォルダ内なら workbooks.open filename:="Book1.xls"
下のフォルダ内なら filename:="\Folder1\Book1.xls"
上のフォルダ内にある別のフォルダの中にあれば filename:="..\Folder2\Book1.xls"
ふたつ上のフォルダ内なら filename:="..\..\Book1.xls"

んな感じで
0894デフォルトの名無しさん2008/11/23(日) 07:28:29
>>893

すげーーーー!
書き込んだあと、いろいろ探してそれっぽいのは見つけたんだけど、このソースが一番短い!!!ありがとう!!
0895デフォルトの名無しさん2008/11/23(日) 10:14:32
>>886
URLリンク先取得
ttp://www.google.co.jp/search?hl=ja&q=VBA+URL+%E3%83%AA%E3%83%B3%E3%82%AF&lr=
>>892
ファイル検索
ttp://www.google.co.jp/search?hl=ja&q=VBA+File+%E6%A4%9C%E7%B4%A2&btnG=%E6%A4%9C%E7%B4%A2&lr=
0896デフォルトの名無しさん2008/11/23(日) 15:47:12
>>891
ちゃんとループ内に入ってることは確認済?
.readystate が変更される前に飛んで来てたりしてないよね
.document.readystate とか、document_completeイベントとかでのチェックはもう試した?
IE が値を返すタイミングはあんまり信用できないから、いろいろ試した方がいいかも
0897デフォルトの名無しさん2008/11/23(日) 19:12:41
RANGE("A1")の

1を変数にしたい場合⇒RANGE("A" & format(i))というのを見つけたのですが、
Aを変数にしたい場合はどうすればよいでしょうか?
0898デフォルトの名無しさん2008/11/23(日) 20:06:38
>>897
普通に変数を & で繋げばOK

dim a as string: dim i as long
a = "A": i = 1
debug.print a & i      ' ←これでも行けるけど
debug.print a & cstr(i)   ' ←ちゃんと型を揃えたければこっち

つか、cells 使った方が効率いいよ
0899デフォルトの名無しさん2008/11/23(日) 21:01:42
>>898
ありがとうございます
とりあえず、a="A"(列名)を列番号からmid関数で取得して、使ってみます。
09008862008/11/23(日) 22:24:38
>>896
ようやく仕事から帰りました

ループの囲みや最初のreadystateのチェック自体はOKだったのですが、
どうやら2回目以降のループで実際は読み込みが間に合ってなかった模様です

Do
 Do
  Application.Wait Now + TimeValue("0:00:01")
  DoEvents
 Loop Until objIE.Busy = False
Loop Until objIE.ReadyState = 4

として、最低1回以上のウェイトを挟んだ上でreadystateの値が4になるまで
ループを回す事で、きちんと最後まで読み込めるようになりました
0901デフォルトの名無しさん2008/11/23(日) 22:57:44
>>899
なんか回りくどいことするんだね、、、いいけどさ

>>900
オレなら外側のループにも doevents 入れたくなるんだけど、
動いたんならいっかw
0902デフォルトの名無しさん2008/11/24(月) 07:27:53
>>899
cells(1,1).select
ってやってみ。
0903デフォルトの名無しさん2008/11/24(月) 19:35:43
2007を持ってる人に聞きたいんだが、2007のFindメソッドのヘルプの使用例は2003同様間違ってる?
0904デフォルトの名無しさん2008/11/25(火) 01:56:12
VBAでHTML形式のメール送信する場合に使用可能な
フリーのオブジェクトって何があるか教えてくださいエロイ人

BASP21なんかフリーだけど、送れるのはテキストだよね
試しにBodyにHTML書いてみたら、そのままテキストで着ちゃったよママン
0905デフォルトの名無しさん2008/11/25(火) 04:26:56
>>904
basp21 でできるはず
ttp://www.hi-ho.ne.jp/babaq/faq.html#M002
0906デフォルトの名無しさん2008/11/25(火) 08:00:48
>>905
即レスありがとう

ありゃ?これは有料じゃなくて無料でもできるのですか?
ちょっと読んでみても区別がつかなかったので、あとでじっくり読んで見ます。
0907デフォルトの名無しさん2008/11/25(火) 09:34:06
>>903
どっちも同じ。
0908デフォルトの名無しさん2008/11/25(火) 14:17:31
あるwebページをIEオブジェクトで操作して、リンクをクリックさせたら別窓でリンク先が表示されました
今後この別窓のIEオブジェクトを掴んでアクティブにして操作するにはどうすればいいのでしょうか?
文系のなけなしの知識でウィンドウハンドルを取得すればいいと思い当たり、
For Eachで各ウィンドウのそれの取得だけはできました(たぶん)

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long)
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
(中略)
hWnd = GetForegroundWindow
Set objShell = CreateObject("Shell.Application")
 For Each objIE In objShell.Windows
  Debug.Print objIE.hWnd
 Next

ウィンドウハンドルの値は取得できても、アクティブにしたい(操作したい)ウィンドウの
それだと判別する方法が解らないので、どなたかご教示&ご解説お願いします
0909デフォルトの名無しさん2008/11/25(火) 14:55:04
>>908
>>1★3,★4
お引き取り下さい
09109032008/11/25(火) 22:02:32
>>907
そっか、相変わらずか。
報告は山ほど行ってるはずなのに。
0911デフォルトの名無しさん2008/11/26(水) 02:07:41
>>910
俺も勉強してる時、ヘルプの使用例には

何度も泣かされたよ。
0912デフォルトの名無しさん2008/11/26(水) 08:19:57
10日で覚えるシリーズの入門編を読んだけど、
次ぎは、どの様な本がお勧めですか?
0913デフォルトの名無しさん2008/11/26(水) 19:41:47
本屋に行って自分の好きなん選べ
0914デフォルトの名無しさん2008/11/27(木) 10:36:04
>>909
日本語わかる?
0915デフォルトの名無しさん2008/11/27(木) 10:49:20
Excelを使う必要はないわな。
0916デフォルトの名無しさん2008/11/28(金) 01:40:51
>>914
教えてもえらなかったからって逆切れですか?
0917デフォルトの名無しさん2008/11/28(金) 09:55:34
VBAのクラスやデザイン・パターンを解説している書籍やサイトは
ありませんでしょうか?
0918デフォルトの名無しさん2008/11/28(金) 22:31:45
OOP
0919デフォルトの名無しさん2008/11/28(金) 22:32:16
酔ってるから間違えた

OOP極めてるオレに聞け
0920デフォルトの名無しさん2008/11/28(金) 23:54:44
vbaでデザパタとかw
09219172008/11/29(土) 00:15:40
すいません、自分で調べたら結構ありました。

VBAとdesign patternで検索したら沢山ヒットしました。
http://www.google.com/search?client=safari&rls=en-us&q=VBA+design+pattern

書籍だと、VB+design patternってのは沢山あるのですが、
VBA専門となると見つかりませんでした。
0922デフォルトの名無しさん2008/11/29(土) 08:07:51
エクセルVBAでユーザーとパスワードで制限されたネットワークドライブのディレクトリにあるファイルの
タイムスタンプとファイルサイズを取得することはできませんでしょうか?
0923デフォルトの名無しさん2008/11/29(土) 08:38:15
ネットワークドライブとは?
0924デフォルトの名無しさん2008/11/29(土) 09:27:04
>>923
社内LANで繋がれたネットワーク上のドライブですよ。
VB.netでやった方がいいのかな。
0925デフォルトの名無しさん2008/11/29(土) 09:29:22
別にどっちでやってもいいけど、Excelに関係ないことはここでは聞かないでね>>1★3,★4
0926デフォルトの名無しさん2008/11/29(土) 10:11:34
EXCEL VBAで将棋とか囲碁とかオセロって作れますか?
0927デフォルトの名無しさん2008/11/29(土) 10:36:38
>>926
作れます。でも>>1
0928デフォルトの名無しさん2008/11/29(土) 12:07:56
>>924
「ドライブ」って何?
0929デフォルトの名無しさん2008/11/29(土) 12:42:28
http://e-words.jp/w/E3838DE38383E38388E383AFE383BCE382AFE38389E383A9E382A4E38396.html
0930デフォルトの名無しさん2008/11/29(土) 13:45:58
FormulaR1C1って何?
Range("A1").FormulaR1C1 = "hello"

Range("A1").Value = "hello"
だと何が違うの?

Range("A1").FormulaR1C1 = "=R[1]C + R[2]C"

Range("A1").Value = "= A2 + A3"
も同じ結果になるね。

FormulaR1C1はダブルコーテーションの中をパースして「あ!RとかCがあるからこれはセルだな!」とか
独り言をつぶやきながらR[1]CをA2に置き換える作業をするところがValueへの代入と違うトコなの?


0931デフォルトの名無しさん2008/11/29(土) 14:56:42
>>929
で?
0932デフォルトの名無しさん2008/11/29(土) 14:57:34
>>930
a = 1とa = 1; b = aと何が違うの?
0933デフォルトの名無しさん2008/11/29(土) 15:38:07
>>929
記法の違い
0934デフォルトの名無しさん2008/11/29(土) 16:03:19
VBA BrowseForFolder この引数について、詳しく
書いてあるサイトありませんでしょうか。
0935デフォルトの名無しさん2008/11/29(土) 17:07:52
あまりの酷さに涙が出てきた・・・。
0936デフォルトの名無しさん2008/11/29(土) 18:49:18
たしかにムンバイのテロは酷かったなあ。
死者が200人を超えるとも言われてるし。
0937デフォルトの名無しさん2008/11/30(日) 10:08:03
Vista 2007です。
VBAって参考本みると簡単な操作で
いかにも思考ルーチンなんか作れなさそうなんですが
そんなことはないのですか?

VBAって入門書が多くて上級本がないように思うのですが
0938デフォルトの名無しさん2008/11/30(日) 10:09:09
なに思考ルーチンって
オセロとか将棋か?
0939デフォルトの名無しさん2008/11/30(日) 10:10:29
VBAで行う必要はありません。
0940デフォルトの名無しさん2008/11/30(日) 16:10:21
入門書いらないレベルなら自分で考えればいいじゃん
0941デフォルトの名無しさん2008/11/30(日) 17:57:52
>>937
言語の能力としては可能だが、VBAで組む必然性がない
0942デフォルトの名無しさん2008/12/01(月) 00:16:33
複雑なアルゴリズムならVBAでやらないほうがいい。
言語としての記述力に欠ける。
0943デフォルトの名無しさん2008/12/01(月) 00:21:26
あんな入力中にいちいちエラーだとか騒がれたんじゃ
落ち着いて作れないしな。
0944デフォルトの名無しさん2008/12/01(月) 14:01:57
Cとかで書いておいたアルゴリズムをモジュールとして
VBAに取り込む方法があるんですか?
0945デフォルトの名無しさん2008/12/01(月) 14:36:08
>>944
APIが使えるから似たような感じでなら使えるんじゃないかな?
自作DLLではやったことないけど
0946デフォルトの名無しさん2008/12/01(月) 16:53:26
Cの関数でDLLを作ってDeclareで取り込むか、ActiveX(COM)コンポーネントとして作って
「参照」で取り込むかのどちらか。
前者の方が簡単。
0947デフォルトの名無しさん2008/12/01(月) 17:37:53
VBから逃げたいだけなら、
JavaScriptを使うか(もちろんScriptのCOMを使って)、
WSHでXML書いてCOMオブジェクトに仕立てあげるか。
0948デフォルトの名無しさん2008/12/01(月) 20:13:06
VBAは専門家の人から見ると、エクセルの補助的なものに使用するという認識ですね。
0949デフォルトの名無しさん2008/12/01(月) 20:15:46
>>943
チミプログラム書いたことないでしょ?w
0950デフォルトの名無しさん2008/12/01(月) 20:41:52
エラーチェックはオプションで切れる
0951デフォルトの名無しさん2008/12/01(月) 22:06:24
XP&Excel2003で、フォーム上にコンボボックスを作りました。
コンボには複数のアイテムを入れるんですが、
その中で最も長いアイテムを表示できるよう、
最初に表示する時点で自動的にサイズ調整はできるでしょうか?
0952デフォルトの名無しさん2008/12/01(月) 22:24:33
VBAのコントロールなんてただでさえ標準コントロールのサブセットみたいな
扱いなのにそんな妙なところだけ親切(いや俺にはそんな機能が親切とは思えんが)
だったりするわけないだろう常識で考えて。。
0953デフォルトの名無しさん2008/12/02(火) 01:03:47
>>948
だってそれが主目的じゃん。
photo shop持ってるのに、paintでレタッチするようなもんだ。
0954デフォルトの名無しさん2008/12/02(火) 01:43:30
>>948
別にExcelにひっつける必要はないと思うよ。
MSXMLでXMLをいじくったりしてるし。適当なVBのメモパッドだと思えば。

Excelだとデータをそのままシート上で
表現できるからいろいろとぬるぬる処理できて便利なんだよね。

>>951
自分で文字列の長さ測って適当なサイズ設定してあげるしかないんじゃないかな。
プロポーショナルフォントはもちろん解除してね。
0955デフォルトの名無しさん2008/12/02(火) 10:36:10
>>951
自動で調節する方法はない。
どこか作業列にアイテムを入れてセル幅を自動調節して結果をチェックするのが一番簡単。
完璧にやるならWin32APIのGDI関数で文字列の幅を取得。
0956デフォルトの名無しさん2008/12/02(火) 21:22:57
Excel VBAの良書ありませんか?

業務でたくさんの仕様書を書いたりしているわけですが、
作った大量のブックの書き方が間違っていた場合など、
これを一つ一つ開いて、手で同じセルに同じ文字を打ち込むわけです。
これがバカらしいのでマクロを作りたいです。
当然必要になるであろう機能といえば、マクロでブックを開くとか、上書きするとか、閉じるとか、上書きで閉じるとか。。
つまりこういうことをするのに便利なリファレンスマニュアル的な本が良いです。
三角関数だの、キューブだの、そんなものはどうでも良くて。
で、逆引き系で、「ブックを閉じるには」っていう一見気の利いた見出しが合って
開いてみると、実はブックの閉じ方だけが載っていて、関連するであろう
「保存して閉じる」とか「上書きで閉じる」とかそういう機能はまったく触れてないような
やっつけハウツー本はいらないです。

m(_$_)mよろぴこ
0957デフォルトの名無しさん2008/12/02(火) 21:28:20
最近VBA本の質問多いけど、本見るよりもググった方が早いと思うけど
0958デフォルトの名無しさん2008/12/02(火) 21:37:27
ああ。そうだよねぇ。普通そうだよね。そうなんですよ。
でも客先だとグーグル禁止なの。・゚・(ノД`)・゚・。
0959デフォルトの名無しさん2008/12/02(火) 21:59:55
>>958
VBAのヘルプ以上のことが書いてある本はまずない気がする。
というか、VBAなんてヘルプがあれば当たり前の作業は当たり前にできるでしょ。
Win32API使わないとできないようなこと(まあ普通に多い)が書いてある本はまずない。

まず客を説得することを考えるべきだろうね。
客が余程の馬鹿か君の説明能力が欠如してなきゃweb閲覧ぐらい許可するでしょ。

しかし、そんなレベルの人を使ってる「客先」が気の毒になるな。
0960デフォルトの名無しさん2008/12/02(火) 22:08:11
グーグル禁止どころかネット禁止の職場なんていくらでもあるが
0961デフォルトの名無しさん2008/12/02(火) 22:12:00
合理性の話をしているのであって「ある/ない」の話なんぞした覚えはないが。
しかし、なんて馬鹿って得意げなんだろう。
20年30年生きてりゃ自分の知能が如何程かわからんわけでもあるまいに。
0962デフォルトの名無しさん2008/12/02(火) 22:15:05
> まず客を説得することを考えるべきだろうね。
> 客が余程の馬鹿か君の説明能力が欠如してなきゃweb閲覧ぐらい許可するでしょ。
許可するしないとか問題外なの
どうやっても"できない"職場なの
0963デフォルトの名無しさん2008/12/02(火) 22:17:34
俺はエスパーじゃないからそんなこと知るかよ。
>>958になんて書いてあるんだよ。
久々に見たわこんなトンチキ。
0964デフォルトの名無しさん2008/12/02(火) 22:19:19
久々に見たわこんな上から目線のやつ。
0965デフォルトの名無しさん2008/12/02(火) 22:21:30
禁止というか、そもそもそこにネット回線が引かれてないとかね。
0966デフォルトの名無しさん2008/12/02(火) 22:22:09
>>962
その通り。

そしてWebの許可をもらうとかそういうことは論点でもない。>なんかやたら威勢の良い世間知らずの方
0967デフォルトの名無しさん2008/12/02(火) 22:22:58
ExcelVBAでユーザーコントロールって作れる?
0968デフォルトの名無しさん2008/12/02(火) 22:37:57
>>966
>>958本人かどうか知らないが、そういう台詞は状況を正確に書いてから言ったらどうだ。
まあこの手の馬鹿に何いっても無駄だろうけど。
0969デフォルトの名無しさん2008/12/02(火) 22:40:09
まあこの手の自意識過剰で偉そうぶった馬鹿は何いっても無駄だろうけど。
0970デフォルトの名無しさん2008/12/02(火) 22:46:38
Excelに付属のオフラインヘルプだとちょっと足りないんだよなあ。
昔はMSDNのCDに詳しい追加のヘルプファイルが入ってたけど、今でもそういうのはあるんだろうか。
VBとWIN32のヘルプをノートパソコンに入れて持ち歩いてたよ。

とりあえず持ち歩くなら技術評論社のポケットリファレンスが小さくてオヌヌメ。内容はちょっと薄いけど
ちょっとセルにデータを入れたいとか簡単なプログラミングならこれで十分。
ttp://www.amazon.co.jp/dp/4774135674
レス数が950を超えています。1000を超えると書き込みができなくなります。