パソコン系インチキメルマガ
パソコンのプログラム系のメルマガのレベルはひどいものである。この種のメルマガの目的はその中に埋め込まれたリンクの「クリック収入」を得ることであることを考えると、これも当然のことかもしれない。内容などはどうでもいいわけである。
なつかしい骨董品
今どきなつかしいN88-BASICのプログラムである。もうとっくに絶滅したと思っていたが、これが「**エンジェニア」というメルマガに出ているというから驚く。
ちなみに、実行方法は、MS-DOS,Windows95,98付属言語の「QBASIC」または「N88互換Basic for Windows」という歴史年表にしか出ていないようなソフトを使うという。今では見かけもしないものばかりである(笑)。
参考
10 A=150+300
20 PRINT "BASIC DE KEISAN"
30 PRINT A
昔のBASIC小僧がいい年になって、まだそこから抜け切れないのであろう。ノスタルジア以外の何物でもない(笑)。
横綱クラスのひどさ
「Visual Basic」や「エンジェニア」などとたいそうなタイトルをつけたものがある。この種のメルマガに多い、前後にプログラムとは無関係の余分な記載が多いパターンである。この30何回目かの号にこんなサンプルが「ソースコード」として出ている。
参考
10 I=0
20 WHILE I<10
30 PRINT "I HA "; I; " DESU"
40 I=I+1
50 WEND
これのどこが「Visual Basic」なのか理解に苦しむ。これは大昔の化石言語というべきN88-BASICである。看板に偽りありのインチキである。昔も今もBasic は子供のオモチャ程度のものであるが、あまりにもバカにした内容である。
また、このN88-BASICが「エンジェニア」と結びつくなどと思っているバカな人間などはいないだろう(この配信者を除いて)。これはN88-BASICが全盛のときからいわれていたほどの常識である。
ちなみに、最新号(2006/03/31)は以下のようなものであったそうである。子供の遊びで作るものでもこんなひどいことはないだろう(笑)。
参考
10 I=100
20 WHILE I>0
30 PRINT "I HA "; I; " DESU"
40 I=I-10
50 WEND
進歩がなく、見る価値はないものの代表格だろう。ゴミにしかならない(笑)。
「VisualBasic エンジニア」というメルマガがある。50回近くになってもまだこんなレベルである。もうお笑いである。
参考
10 DIM A$(3)
20 FOR I = 0 TO 3 STEP 1
30 INPUT A$(I)
40 NEXT I
50 FOR I = 0 TO 3 STEP 1
60 PRINT "MOJIRETU "; I; " = "; A$(I)
70 NEXT I
30年ほどの前のBasic小僧(小中学生)が入門時によく遊んでいたレベルである。おまけに行番号までついているから完全にN88-BASICである。これで「エンジニア」と銘打つ感覚が笑わせる。Basic屋は独自の世界を持っているようである(笑)。
ちぐはぐ
エクセルのメルマガのサンプルに次のようにものがある。Basicの無宣言変数のことはさておくとしても、このサンプルの説明のメインが、「s=s+1という数値の加算の方法」と、「文字列は""で囲む」ということになっている。その他については説明はない。
参考
Sub Macro1()
n = Cells(Rows.Count, "B").End(xlUp).Row
Range("B1").Select
s = 0
p = 0
For i = 1 To n
a = ActiveCell.Value
If a = "田中" Then
s = s + 1
ElseIf a = "鈴木" Then
p = p + 1
End If
ActiveCell.Offset(1, 0).Activate
Next i
ActiveCell.FormulaR1C1 = s
ActiveCell.Offset(1, 0).Activate
ActiveCell.FormulaR1C1 = p
ActiveCell.Offset(0, -1).Activate
ActiveCell.FormulaR1C1 = "鈴木さんの人数"
ActiveCell.Offset(-1, 0).Activate
ActiveCell.FormulaR1C1 = "田中さんの人数"
Range("B2").Select
End Sub
ここで、知りたいのは後半部分で、次のようにしているところである。
参考
ActiveCell.FormulaR1C1 = s
ActiveCell.FormulaR1C1 = "鈴木さんの人数"
たかが定数(数字または文字列)の取得設定にすぎないのに、なぜ、ActiveCell.FormulaR1C1 と ActiveCell.Value を使い分けているのかという点である。
普通はFormulaR1C1などは使わないところである(Valueを使うはず)。値の取得と設定という違いはあるにしても、前半の方では「a = ActiveCell.Value」として文字列を取得し、後半では「ActiveCell.FormulaR1C1 = "鈴木さんの人数"」として文字列を設定している。
この例で、FormulaR1C1とValueを使い分ける理由の方こそ知りたいものである。
どうやら、セルから値を取得する場合に「Value」を使い、セルに値を設定する場合に「FormulaR1C1」を使っているようである(推測)。しかし、実際問題としてこのように使い分ける必要はほとんどない。
なお、十年一日のメルマガも参照。
無意味さ
VB/VBA系のメルマガなどではこの言語が持つ動作などよりは、それ以外の内容、たとえばWindows APIの呼び出しや他のオブジェクトの呼び出し方を書くのが高級であるという雰囲気があるようである。
VBは子供のオモチャ程度のものだからなおさらAPIの呼び出しなどに「高級感」が出るのかもしれない。VB/VBAでは味わえないようなシステマチックな操作ができることが、プログラミングの素養のない者に「快感」を与えるからかもしれない。
そのため、ファイルの作成日時を取得するというほとんど無意味なものまで登場する。FileSystemObjectを使うため、ただそれだけのためのものである。
参考
Sub Sample()
With New Scripting.FileSystemObject
With .GetFile(ThisWorkbook.FullName)
MsgBox .DateCreated
End With
End With
End Sub
問題はこういうものの必要性である。ファイルにとって重要なのは、そのファイルを最初に作った時よりも、最後に更新した時のほうである。
また、作成日時が更新日時より新しいファイルもある。こういう「逆転」ファイルに対しては、このようなサンプルはまったく無意味である。
これもひどい
エクセルVBA系のメルマガにはかなりひどいものが多い。これが某メルマガの20回目を過ぎたあたりのサンプルである。この程度のものなのに、延々と無駄話が続く。全体で275行もある中で、下記の4行以外は全部こういうマクロとは関係ない、自分の英語の知識や自慢話ばかりである。
参考
Sub SetValue()
'セルA1に値を入れる
Range("A1").Value = 1
End Sub
長文の割にはサンプルの内容は何の役にも立たないものである(笑)。
ちなみに、この回に続くメルマガのサンプルは下記である(笑)。これも相変わらず、マクロとは関係ない話で埋められている。
参考
Sub SetValue()
' セルA1に値を入れる
Range("A1").Value = "ありがとう"
End Sub
こんな程度ではいつまでたってもエクセルのVBA・マクロが使えるようにはならないだろう。
はぐらかし
Access VBAについてのメルマガもある。この種のメルマガはほとんどアクセスのヘルプの引き写しであることはもう常識になっている(エクセルVBAも同様である)。
たとえば、そういうメルマガで最近配信されたものに、OutputToについてのものがある。構文、定数、説明などはほぼヘルプそのままを列挙(羅列)してある。その後に、申し訳程度に使用サンプルが付けられている。行数比にして引き写しが53行に対して、自作サンプルは4行である。そのサンプルが下記である。
参考
Sub OutputToSample()
'[書籍テーブル]をHTML形式ファイルとして出力する
DoCmd.OutputTo acTable, "書籍テーブル", acFormatHTML, "C:\書籍テーブル.html", True
End Sub
この部分だけがメルマガ作者の考えたものらしい。このサンプル見て、これは役に立つと思うのはよほどのドシロウト以外にはいないだろう。メルマガなどで配信されるもののレベルはこのようなものが大半である。
ちなみに、MSの公定ヘルプのサンプルは下記のようなものである。
参考
DoCmd.OutputTo acOutputTable, "社員", acFormatRTF, "Employee.rtf", True
[社員]テーブルをリッチテキスト形式(.rtf)でEmployee.rtf ファイルに出力した後
すぐにWordでこのファイルを開くというサンプル。
通常はヘルプを見れば先のようなサンプルは当然だれでも作れる程度のものである。しいて言えば、われわれの知りたいのは、テーブルのデータをわざわざHTMLファイルにして画面表示することの必要性の方である。こういうことがどのような場面で必要になるのかが書いてあれば、多少の参考にはなることがあるかもしれない。しかし、そういうことはこの種の程度の引き写し系メルマガには「ないものねだり」であろう。
繰り返しの循環パターン
VB/VBA系のメルマガの内容はひどいが、C/C++系も同程度にひどいものが多い。下記のようなものが知り合いのところにきているのを見た。これが某メルマガの200回目を過ぎたあたりのサンプルというからまた驚いてしまう。
参考
C言語
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
C++
#include <iostream.h>
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
何度となく見る内容で、同一人のメルマガでも何度となく繰り返されているようである。クリック収入を得るというメルマガの目的からいえば、同じ内容を何度でも循環させるのが楽なのでであろう。しかし、見るほうからすると何の意味もない。1冊まともな本を買う方がはるかに勉強になる。
- 2006/01/02 -
想定外のアクセスである。このページは世間に出回っているエクセルがらみのVBもどきの操作の「くだらなさ」の例として出したものである。
LOG
126.90.84.121 [26/Oct/2013:01:13:16] tpc_0041 vba エクセル ブック 操作 getfile
しかし、こういうエクセルバカは「getfile」の使い方を知りたくて(コピペのために)やってくるのである。
エクセル屋の世界はバカがバカを相手に商売できる世界である。
LOG
202.162.112.19 [12/Jun/2014:10:00:32] ActiveCell.FormulaR1C1 = "50"の意味
こういうのを見ると、インチキ・メルマガ屋が商売できるのもわかるなぁ(笑)。
エクセルバカ(Excel/Access/C#を含む)はケタはずれのバカだからである。