ITservice雄飛 プロモーションビデオ

2020年11月23日月曜日

ちょっと変わった副業を始めた話

こんにちは、ITservice雄飛です。

副業を始めました。


皆さん、霊能力って信じますか?

信じなくて良いんですが、結論から書くと。

(霊能力は宗教ではないですので)


世の中には何でも何処でも怪しいのはあるので、

疑った方が何かと良いのではありますが。


特に見えないもの系は、疑って掛かって損はないです。

只、全否定VS肯定みたいな、宗教紛争は不毛ですけどね。


さて。

私、実は霊媒体質で霊感が子供のころからあり、

霊的な事(浄霊)とか気功とかをやっております。

実家の住んでいる所が古戦場跡で、出るんですけどね、ごく時々。


で、遭遇したり、お持ち帰りした不浄霊さんを浄化したりしてる訳です。


そして、最近になり、霊視が出来るようになり、

2年ほど前から、そういうご相談も受けていたりしました。


で、やっと本題。


どういう事するの?って話ですが。

あ、事前にお断り。

賭け事、訴訟、物理的問題(霊的要素以外)は、対応不可だったりします。

人は空飛べません、モノを手に持たずに動かせません、それはマジックで種ありですから。

賭け事等の争い事は、先を読むことは出来ません、不可能です。

さて。


どうやるの?ってお話。


私の場合、相談者さんの魂と守護霊を直接見ます。

なので、心を開いてくれることが大前提ではあるのですが。


もしかすると、脳波を読み取っているのかも知れない、科学的には。

良く判らないけど。


で、相談者さんにご許可を取った上で、守護霊さんと相談者さんの魂を見ます。

ご許可を取らないと、基本的には、先ずまともに見えない。

守護霊さんがアクセスを防ぐから(だと思っている)。


すると、先ず相談者さんの考えたことがそのままこちらに伝わる。

次に守護霊さんに、その言葉を問い合わせると、その問題の解(結論)が得られる。

そこで、その解が何故そうなるのかを、追いかけていきます。


守護霊、魂の浄化(強化)、(必要であれば)前世と対話し、

今ある問題の意義をお伝えする。

不浄霊等が付いている様であれば、浄化し天に返す。

相手がいる様であれば、相手の魂、守護霊とも、相談者様を介して意見調整する。

上記の過程を経ると、きれいに最初の結論にたどり着きます。


そんな感じでしょうか?


メール一通2千円からやっています。


ご興味ある方は、ご連絡いただければ、霊視や浄霊いたしますよ。


それでは。

2020年11月10日火曜日

拙作の 経歴書作成ソフトを全面的に見直している話

お疲れ様です。

本日二本目の投稿です。


色々と時間が出来てきて、体力的にもゆとりが出来てきたので。


僅々の課題だった、経歴書作成ソフトウェア「あぁ、だれか作って経歴書!」を、リメイクし、全面的に見直して作り直しています。


このソフトは公開しているんですが、一部にバグがあったようでm(__)m、それに気づいたのが、昨年末か今年に入ってからで。

ただ、このソフトは開発ソフトに「Delphi」という開発言語を当時使っていて、昨年末から今年に入った時には諸般の事情で「Delphi」が使えなくなってたという、笑えない事情があり。


そして、今年半ば、つい2か月ほど前に、Lazarusという環境で、Delphiで作成した当時のプログラムを移植可能な様、必要なライブラリを再構築出来ました。

そして、今月に入り時間も出来てきたので、急遽、移植とバグの修正に取り組んでおります。


やっと、ファイルの読み込みと保存、経歴書の出力が確認できた状態で、本丸のバグはこれからです。


本当に申し訳ないです…。



今月末中のUPを目指して、なるたけ時間を割いて開発しています。

それでは。

コンピュータ言語を作っているお話

お疲れ様です。

ITservice雄飛です。


今仕事で。

簡易コンピュータ言語を作っています。


まだ、変数はString型一つ、

While文とIf文、そしてそれらのネスト、

メッセージダイアログコマンド、

ファイルを開くダイアログコマンド、

ファイルオープンコマンド、

ファイルセーブコマンド、


を実装しただけの、まだ何もできない状態なんですが。

まだ、実装中です。


今回は、どうやってどうすれば、コンピュータ言語を作れるの?というお話。


今作っているのは、スクリプト言語になる予定の簡易言語です。

現時点では、言語を搭載したエディタからしか実行できませんが、最終的にはスクリプト化し、直接実行できるようにします。


何が目的?

JavaScriptとVBA、VBSを外部から呼び出し、疑似的に一つの言語として使えるようにします。

いわば、今作っている言語を土台として、それら外部の言語をラッピングし、独自言語の様に呼び出せる様にする訳です。

あぁ、道は遠い…。


さて。

どうやって実行させるの?


基本は、開発言語の機能を使います。

それらをラッピングし、あたかも自身の機能の様に呼び出せる様にします。


次に、実行順序。


実行手順書が必要になります。


IfやFor、それらのネストを感知し、それらを一度解釈します。

この順序で実行、ここで指示待ち、ここでループ、といった様に。


それらを説明書の様に詳しく順序だてて、自作言語が理解できる形に整形します。


そして整形が終わったら、その手順に基づいて、言語を走らせて、実行させます。


結局は、「手順書」が重要なんですね。


普通のプログラミングと同じで。

何事も、基本が大事だと思う、今日この頃です。


ハイ、完成にはまだほど遠いです…。

2020年10月29日木曜日

レース関係でつくばに行ってきた時のお話。

 ものすごく、お久しぶりです。

ITservice雄飛です。


投稿していない間に、色々ありまして。

今回の投稿は、ITの様でITじゃない分野にはなります。


ZENKAIRACING.COMさんという、レーシングシミュレータ屋さん(本物のモータースポーツもされています)のところにお邪魔致しまして。


で、訓練用の本物のレーシングシミュレータに乗せていただきました。

その上、ZENKAIRACING.COMさんが運営する、

e-SPort Raceにも出場させていただきました。


滅茶苦茶難しかったです。

シミュレータで乗せてもらったのは、コースはつくば2000。

車両はS-FJ。

タイムは1分6秒(基準タイムは1分フラット(0秒台))。

ハンドルが、とにかく重いのなんの。

ブレーキが、とにかく重いのなんの。

10分走って、完全にバテました。


そしてe-Sport Raceでは、現役のレーシングドライバーの方も走られていて、皆速いのなんの。


レースのコースは岡山国際サーキットで、僕が1分47秒で周回してたのに対し、皆42,3秒前後で周回してました。

事前の練習では45秒台だったんですが、ガチガチに緊張して、本番では2秒も下がりました。


そしてトップ集団は、39秒台で周回してました(!)

もちろん、僕は断トツの最下位です(汗)

しかし、滅茶苦茶楽しかった・・・。そして皆、強烈に速かった・・・。


こちらがそのe-Sport Raceで使われた仮想車両。






で、お世話になったので、ZENKAIRACING.COMさんのレースにも応援に行ってきました!

なんと(!)、社長自らハンドルを握られておりました!

こちらがその車両。S-FJっていうレーシングカーです






仮想車両も正確に再現されています。



そしたら、その上なんと!

ガレージが、僕が昔いたチームじゃないですか(!!)




僕がいたころは、2001年~2008年頃で、WindsGarageってチームだったんですが。

今は、SuperWindsって名前に変わりました。

そして、今は只のOBなんですが。


カテゴリも、FJ1600(フォーミュラジュニア1600)っていう、今は無いカテゴリ(公式には)なんですが。

(練習とか体験走行では、今でもFJは元気に走ってますよ?)


今は、S-FJ(スーパーフォーミュラジュニア)っていうカテゴリに移行しました。


FJは羽(ウイング)のないフォーミュラーカーなんですが。

S-FJは羽(ウイング)が前後についています。


FJのエンジンがスバル製の1600CCの水平対向エンジンに対して、

S-FJは、1500CCのホンダ製のVTECエンジンを積んでいます。


SーFJは乗った事が無いので判りませんが、FJに関しては、とても操作がシビアだったと記憶しています(間違っても他のレーシングカーやS-FJが簡単という意味ではない:むしろ、どれも難しい)。


さて、前置きが長くなりましたが。


先週の2020年10月25日(日)、S-FJつくば地方選手権の最終戦に行ってきました!


先ずは、昔スクール生時代に走ってた、つくば1000に行ってきました。

懐かしいね。



そして、筑波本コース(つくば2000)へ。

入場料が1000円。チケット買って、いざ。


丁度、S-FJの予選が始まってました。


懐かしい音、懐かしい匂い。

微妙に感動しました、数年ぶりに来て。

皆、速いなー。


予選が終わって、昔からいる懐かしいメンツの方々や、そうでない新しい方々、いろんな人がいました。


ロードスターレースが大盛況で、e-SPortからリアルモータースポーツに移行した人が沢山いるみたいでした。


そんな中、S-FJも10数台(確か16台位)が走ってて、久しぶりに盛況でした。




で、懐かしいメンツの方々や、昔お世話になった、ガレージの社長ともお会いできました。


今は本当に体力無くて、レース見に行ってきただけで体力使い果たしてしまい、帰路についてしまいましたが。


これから、e-Sport Raceという形ですが、色々活動することになると思います。

それに付随して、つくば界隈にも、数年ぶりに顔を出すことになると思います。


皆さんお疲れさまでした!


久しぶりにいい刺激を受けました!


そして!

次回のe-Sport Raceも、アナウンスがあったので頑張ります。

次回のコースは鈴鹿!

・・・皆、速いんだろうな・・・(汗)。


最下位でもなんでも、ブランク埋めるべく頑張ります!!

2020年8月4日火曜日

Kindle本を書いている話

こんにちは、ITservice雄飛です。
微妙に忙しい、今日この頃です。

今日も、よもやま話を。

今、片手間ではありますが、Kindle本を書いておりまして。

きっかけは、半年前に書いたKindle本がちょこちょこ売れ初めまして。
で、じゃぁ、もうちょっと本の本数増やそうかな、と思った次第です。

で、話は戻って。

私が最近主に使う言語は、Lazarus(FreePascal)なんですが。

これに関する日本語の情報が少ないのなんの。
大体、英語とかドイツ語とかが大半ですね、ググると。
コードは同じなので、多少文を翻訳できれば、ソース見て内容はわかるんですが。

更に、書籍はもっと少なくて、ドイツ語の分厚いのが1冊、Kindleで書かれた本が日本語で1冊。それだけかな?

分厚いドイツ語のは持ってます、因みにですが。(高かった)

更に、私がメインとして行う、(日本語での)VBA処理に関する文献はWeb、書籍共に皆無でして。


「じゃぁ、書こうか、試しに」

となった次第です。

内容としては、FreePascal(Lazarus)を扱える人自体が少ないと思われるので、プログラミング入門書と位置付けて、プログラミングやアルゴリズムのイロハから始まって、ハローワールドからVBAとComObj使ったサンプル作成、テーマを自由に決めて、その中から作品を作る、という章で終わる、という構成です。

昨日、夜な夜な書いていました。

さて、執筆終わるのにどれくらい時間かかるだろう?
結構なボリュームになりそうなので、時間は掛かると思います。

それではそれでは。


2020年8月3日月曜日

プログラミング技術だけ覚えても駄目な話

こんばんは、ITservice雄飛です。

最近は、自作のエディタの更新と。
本業と副業、共に忙しい今日この頃。

さて、本題。

今、プログラミングが(まだ)熱いというか、盛んですが。

以前、ツイッターの方で、非常にごく簡単なアンケート取ったんですが。

それで、反応を見て難しいなと思った感想を持った訳です。

何が難しい言って、プログラミングだけ覚えれば、それで良い、
そうすれば食べていけるんだろう、みたいなアンケート結果だったので。

結論を先に書くと。
「プログラミング」だけ覚えても、仕事にするのはとても難しい。

これでしょうか?

独立って意味ではないですよ?

なんで??

それは、基盤となる必須の基礎知識的な技能であって、
それを実現する、別の各種知識が必要になるからです。

簡単に図示するとこんな感じ。

・対象の業務に関する専門知識
・アルゴリズム構築技能(設計技術、構築技法)
・プログラミング(コーディング)技能


簡単に、大雑把に、図示しただけですが。
細かく書き出すともっとあります。

上記の技能をうまく作動させるために、
コミュニケーション能力も結構重要だったりします。


例えで、仮のやり取りで書きますね。

・お客様「会社の単純手作業を何とかしてくれないか?」
・受注者「どの様な作業でしょうか?お話をお伺い出来ますか?」
(お客様と受注者でやり取りを行い、受注者はヒアリングをする)

・受注者「AとBは自動化可能ですね。Cは難しいというか、自動化は危ないですね。」
・お客様「どれ位で出来るの?どこまで楽になるの?」
・受注者「お伺いしたお話の限り、AとBはエクセルVBAを使えば1時間です。」
・受注者「もっと早く数分で処理する事も可能ですが、その場合納期は嵩みます。」
・お客様「作業時間は掛かっても良いよ、急いでいるから、エクセルで良いよ。」
・受注者「このAとBのエクセル処理なら○○日で出来るでしょう。」
(ここの、見積もり納期の勘案は非常に重要だったりする。少しだけ多めに見積もる感じ)

・受注者「これを自動化して欲しい。」
・受注者「Aの処理とBの処理を、1時間以内で出来るVBAを書いてほしい。」
・作業者(プログラマ)「扱うサンプルデータはありますか?」
・作業者(プログラマ)「お客様の行っていた作業の工程教えていただけますか?」
・受注者「Aがこれで、Bがあれ。資料送ったよ。」
・受注者「お客様からヒアリングしたから、それを基にサンプル作って。」
・作業者(プログラマ)「ありがとうございます、早速取り掛かります。」
(ここでプログラマは、資料と睨めっこして、自動化の方策を書き出してアルゴリズムに落とす)
・〇日(納期○○日の半分が経過)

・作業者(プログラマ)「テスト版ですが出来ました。」
・作業者(プログラマ)「サンプルデータで動いているだけなので、保証は出来ません。」
・作業者(プログラマ)「実作業に近いデータは貰えますか?詳細詰めたいです。」
・受注者「交渉してくる。欲しい作業内容を詳しくお願い。」
・作業者(プログラマ)「Aは△の処理の際の文字の長さの揺れ幅が知りたいです。」
・作業者(プログラマ)「Bは□の処理の際のテキストのフォーマットを知りたいです。」
・作業者(プログラマ)「テストプログラムと資料送りました、これで大丈夫ですか?」
・受注者「ありがとう、交渉してくる。」


(ここで、お客様にテストプログラムを確認して貰い、詳細を詰める作業をする)
・受注者「この様な感じで進めております。テスト版ですが、ご意見お願いします。」
・お客様「あれとこれは良いね、ここは要らない、そこに作業経過が欲しい。」
・受注者「Bの作業の差し支えない空データは貰えますでしょうか?」
・お客様「良いよ、適当な数字と文字で良い?」
・お客様「ありがとうございます、その方が助かります。」


・作業者(プログラマ)「ありがとうございます、助かりました。作業に移ります。」
・受注者「納期通り終わりそう?」
・作業者(プログラマ)「テキストのフォーマットが判ったので大丈夫です。」
・作業者(プログラマ)「納期数日前に、客先でテストさせて貰えますか?」
・受注者「判った、お願いしとく。」

・作業者(プログラマ)「初めまして、□□と申します。」
・作業者(プログラマ)「納品前に動作を確認させていただきたく存じます。」
・お客様「どうやって使うの?」
  ~省略~
・お客様「良いね、でも時々止まるね。」
・作業者(プログラマ)「申し訳ございません、事前に確認出来て良かったです。」
・作業者(プログラマ)「今修正しました、どうでしょうか?」
・お客様「良いね、今度は何やっても大丈夫だね。」


上の例えは、私が一人でやっていた受託開発を、幾つか擬人化させて登場人物を増やし、架空の案件で例えてみました。


・先ず、絶対的に必要なのはコミュニケーション力です。
コミュ力が無いと、色々苦しみます。
書く言う私も、日々コミュニケーション力は試されています。
それだけでなく、交渉力も重要になってきたりします(私の場合)。


・次に必要なのは、アルゴリズム構築能力と、それの言語化能力です。
アルゴリズムというのは、動作原理とも言えるかと思います。
要は、モノが動く仕組みを、頭の中で構築する能力です。
そして、それを図と文章で記す能力。
これが出来て、初めてプログラミング作業に命が灯ります。

・業務専門知識
必須です。
仕事を受ける場合、プログラミング出来ればどの分野でも、という訳には行きません。
ではどうするのか?お客様は、その分野の専門家です。
要は、プログラマたる私はその分野の素人な訳です。
細かく聞いて、只管聞いて、覚えるしかありません。
実際、そのように仕事をした事もあります。

プログラミングだけ覚えても、コーダー(コードを書く人)になっただけです。
しかし、第一歩には違いはなく、そこで満足するのではなく。
常にどん欲に学習していかないといけない、と言う事になります。


逆に、貧欲に学習する人は、何をやっても成功するかと思います。

今回は、これにて以上。

2020年7月31日金曜日

ExcelVBAでShapes(画像)が所属するセルのRowを取得する

ITservice雄飛です。

ほんとにお久しぶりの投稿です。
今回は、Excel VBAを。

今、オブジェクト(シート上に貼り付けられた画像)のRowsを取得する関数を探していたんですが。

どうも、昔はあった様だけれども、現在は廃止になっている様で、無情にエラーが返って終了しました。

色々考えた末、セルのサイズも取得できること考えたら、それアルゴリズムに落とせば良いだけじゃん、、、という、一般的且つ、ごく普通の考えに至りました。

で、思いついたら即実装。
簡単ですね、WhileとIFと変数の加算減算だけなので。
例ではRowですが、取得する値を幾つか変えれば、Colにも対応可能ですね。

本番はLazarus(Pascal)からComObjで呼び出すので、これからそれを組みますが。

まぁ、消すには勿体ないので、ブログ記事にしました。
以下、こんな感じ、即興のテスト関数です。

※このサンプル関数では事前に、オブジェクト(Shapes)を選択(Select)している必要があります。


Function Return_Sharp_Rows(start_i As Long, end_i As Long) As Long

  Dim tp As Long '選択したオブジェクトのTop座標を格納
  Dim rw As Long 'RowsのTopの合計値を格納
  Dim rw2 As Long 'RowsのHeightの合計値を格納
  Dim i_1 As Long 'While開始位置
  Dim i_2 As Long 'While終了位置
  
  tp = Selection.ShapeRange.Top '選択されたオブジェクトのTop座標を取得
  rw = 0 'Row.Topsを初期化
  rw2 = 0 'Row.Heightsを初期化
  i_1 = start_i '開始位置を引数から代入
  i_2 = end_i '終了位置を引数から代入
  Return_Sharp_Rows = -1 '検索にヒットしなかった場合の暫定値設定
  While i_1 < i_2 'While文開始
   rw = rw + Cells(i_1, 1).Top  'Row.Topsを代入
   rw2 = rw2 + Cells(i_1, 1).Height  'Row.Heightsを代入
   If ((rw <= tp) And (rw2 >= tp)) Or (rw = tp) Then 'オブジェクトの座標をセルの数値と比較し検証する
     Return_Sharp_Rows = i_1 '一致した場合、戻り値にセルのRow(i_1)を代入
     i_2 = i_1 '開始位置と終了位置を同一にし、While文を終了させる
   End If
   i_1 = i_1 + 1 'Rowを一つ下に移す(i_1を加算する)
  Wend
End Function

呼び出すときはこうします。例です。
Sub Get_Shapes_CellRow()
 Dim i As Integer
 i = Return_Sharp_Rows(1, 20)
 MsgBox Str(i)
End Sub

以上。
Excelって便利ですね。

自己紹介

デスクトップアプリケーション、ホームページなどの製作承ります。


ご挨拶


初めまして、本ページにアクセスいただきありがとうございます。


コンピュータが本格的な社会インフラとなり、すでに20年近い月日が経っております。

私が初めてコンピュータに触れたのは、1994年の18歳頃の時で、インターネットがまだ身近ではない状態のころでした。


それからは目まぐるしくコンピュータはソフトハードともに著しく発展し、Windows95の登場とともに、世界中がひとつのコミュニケーション手段でつながるインターネットと言うインフラ基盤が登場しました。


今となっては当時のコンピューターは、今のスマートフォンはおろか、ガラケーと呼ばれるフィーチャーフォンの処理能力にすら、及ばなかったと思います。


それから25年、様々のコンピューター言語、様々な OS、 様々なソフトウェアやミドルウェア が登場し、日進月歩著しい成長を遂げたのは、知る人ぞ知るところだと思います。



しかし、急激な発展を遂げるその裏では、 IT インフラの活用についていけず、情報弱者と呼ばれる、 ITインフラから大きく遅れをとる人々を生み出したのも、また事実かと思います。


この25年でコンピューターや携帯可能な情報端末、つまりフィーチャーフォンやスマートフォン、タブレット等は大きく成長し、日々、猛烈な成長を遂げ多彩な端末を生み出しております 。


では、それらが操作性に優れ、万人全てが扱える道具かと言うと、決してそうではありません。


メーカーや端末ごとによって、多少の共通性こそあれ、操作方法は皆バラバラで、 

ある程度の慣れと端末への学習がなければ、使いこなすのが難しいのが、今の現状だと思います。


言い換えれば、コンピューターはまだまだ未熟で、発展途上の産物だと思うのです。



しかしその一方で、それら情報端末には、未知数の可能性があるとも考えています。


ソフトウェア(ソフト)やアプリケーション(アプリ)を導入することにより、

安易に機能拡張することができる一方、特定の目的に特化したソフトやアプリを作れば、

目的や不便を解決するための効率的な便利なツールになり得るのです。


ソフトウェアやアプリケーションの製作は頭脳と体力との勝負であり、

作業も決して、安易だったり容易なものでもありません。


しかし、目的をきちんと理解し、設計し開発をすることにより、

パソコンや携帯可能な情報端末を、魔法の道具箱のように、

何百何千行の文章書類を加工したり、計算したりする事ができます。


そしてそれらは良く、オーダーメイドスーツのようなものに例えられます。


それを実現するのが、私たちプログラマの使命だと信じて疑いません。

また、その知識をお裾分けし、お伝えするのも使命のひとつだと信じております。



オーダーメードで、既製品にはない、かゆいところに手が届く商品をお作りします。


 ITservice雄飛

代表 脇保 雄飛


経歴

1976年生まれ

1995年3月高校卒

1995年4月有限会三余 入社

2001年11月WindsGrageRacingSchool

(モータースポーツ競技学校)入校 

2011年3月有限会社三余 退社

2011年4月千葉商科大学入学

2014年6月屋号雄飛(ITservice雄飛)起業届提出

2016年3月 常駐型派遣業務に従事

2016年4月千葉商科大学 卒業

2019年11月 有限会社三余 社内SEとして従事 


保有資格

2012年6月

コミュニケーション基本スキル認定 取得

2012年7月

営業基本スキル認定 取得

2013年12月

ホスピタリティ基本スキル認定 取得



自己紹介

高校卒業後、仕事の傍ら独学で、コンピュータ全般知識とプログラミング習得に励む

2001年に四輪モータースポーツの登竜門 FJ 1600つくば地方選手権出場を目指し、

WindsGrageドライバーズオーディションに参加。

WindsGrageRacingSchoolに、 「優秀C」 で合格し、入学する。

2001年から2008年まで、仕事の傍らモータースポーツに励む。

練習中の事故や病気などが重なり、2008年に引退。


不動産賃貸リフォーム関係の業務に携わる傍ら、

社内効率化の仕組みを、 delphiにて独学 で構築する。


2009年には持病の関係から免許証を返納、車の運転ができなくなる。

2011年、 IT 関係と営業関係の技能を身につけるべく、私立系商科大学に社会人で入学する。


モータースポーツ活動で養った活動力を武器に、学部を越えて多岐にわたる講義を受ける。

学費を稼ぐためにソフトウェア開発のアルバイトを 営業活動の末に受託開発業務を行う。

2014年には起業届を出し、 営業活動の末に顧客を獲得、幾度かに渡って受託開発を行う。

学費の捻出と体調不良のため一年休学するも、 その間を利用し、

卒論として1万5千ステップの多目的コードエディタの開発を開発実験として行う。


2016年3月に、中途採用枠で、 就職と受託業務契約の仕事を探し、同月に常駐型派遣業務に従事する。


同年4月に大学を卒業、そのまま個人事業主として受託開発と常駐業務を行う。


2017年から18年にかけて幾度かに渡って体調不良を引き起こす。

2019年、療養に努めながら、古巣の会社に戻り、社内 SE として勤務する。


2020年より受託開発を再開、現在に至る。



使用言語

Delphi及びLazarus(Pascal言語)

VB系言語(主に、VBA、VBS)

HTML+Css3+JavaScript

PHP

Python 

(得意順。主に使用するもののみを列挙。)


開発手法

ウォーターフォール型開発経験: 3年

アジャイル型開発経験:9年

独学期間を含めた全ての開発経験:15~20年

主要 取り扱い商品

VBAによる手作業処理の自動化プログラム作成

(Excelマクロ)

手作業処理の 自動化プログラム作成

(ComObjを用いた、VBAを外部アプリケーションからの呼び出しによる)

デスクトップアプリケーション作成(※上記との連携含む場合あり)

(Delphi、Lazarus、C#等の開発言語による)

ホームページ作成

(WordPress+レンタルサーバによる)

初歩的なマンツーマンパソコン教室(現在はリモートのみ)

教育用言語を用いたマンツーマンプログラミング教室(現在はリモートのみ)

2020年6月13日土曜日

Lazarusから日本語対応でComObjを使ってExceVBAを呼び出す

おはようございます。

久しぶりの投稿です、ITservice雄飛です。

Lazarusから、VBAを呼び出して自動処理を書いています。
そして、Delphiで使っていたライブラリを、Lazarusに移植しております。

今回は、そのネタを。

Lazarusは、Ver2.08(64Bit)を使用しております。
Excelは、2016になります。

Lazarusは、開発環境内部の文字セットが、UTF-8です。

旧Delphi(Ver6位)だとAnsi、
新Delphi(XE前後以降)だと、Unicode。

更にUTF-8でそのままやると、Excel等とのアプリケーションの連携で苦しみます。

要は、文字化けですね。
やってみればなんてことはないのですが、
WideStringで変換を掛ければ一発で行けました。

Delphiとは似て非なるのがLazarusでもあり、その辺りは、
慣れと試行錯誤でしょうか?

以下がコードになります。

あとは、普通にVBAをDelphiで呼び出すようにして記述するだけです。

気持ち程度ですが、Delphiより処理速度が速い気もします。


procedure TForm1.Button1Click(Sender: TObject);
var
  Exl:Variant;                             //Excelを呼び出す為の器
  SheetNo,row,col:integer;          //シート番号、セル番号
  SheetName,CellValue:String;    //シートタブ、セルに入れる文字列
begin
  SheetNo := 1; //番号は1番(Sheet1)から。
  row := 1;        //Row1を指定
  col := 1;         //ColAを指定
  SheetName := 'シート名を代入するよ';         //シート名を設定
  CellValue := 'セルに文字を代入するよ';         //セル名を設定
  Exl := CreateOleObject('Excel.Application'); //ExcelのComObjを呼び出し、初期化する
  Exl.Visible := true;                                     //エクセルの表示をONにする
  Exl.DisplayAlerts := true;                           //警告(アラート)を有効にする
  Exl.Workbooks.add;                                   //ワークブックを新規に追加する

  //シート名を代入(WideStringで変換をかける)
  Exl.WorkSheets[SheetNo].name:= WideString(SheetName);
  //セルに文字を代入(WideStringで変換をかける)
  Exl.WorkSheets[SheetNo].Cells[row,col] := WideString(CellValue);
  //Excelを終了させる
  Exl.Quit;
  //Variantを初期化し、使用した痕跡を消去する
  Exl := nil;
end;


2020年5月21日木曜日

ExcelからSQLserver(ローカル)に接続する。

お久しぶりです、
ITservice雄飛です。

今回は、技術ネタを。

実家の会社の基幹となる小規模なシステムがあるのですが。

WinXP+SQLserver2000+VB6業務用アプリ、という、

すごーく、すごーーーく、古すぎる(運用20年)のシステムでして。

これがそろそろ、本当に壊れそうになってきた。

サポートはもう切れて(もう売ってもないし、サポートもしてくれない)おり。

仕方なく、Excelにて、臨時のシステムを作る事になりました。

Excelって、こういう時、本当に力になるよね…。

先ずは、データの吸出しから。

データベース(SQL Server)に接続する(ADO)
https://excelwork.info/excel/databasesqlserver/

こちらのサイトを参考に致しました。

しかし、繋がらない。

「SQLserverが存在しないか、アクセスが拒否されました」

と出る。

そこで、さらにググってみる。

すると、「接続文字列」、「名前付きパイプ」というキーワードに、
辿り着きました。

SQL Serverが接続に使用しているプロトコルを確認する方法
https://became-free.com/sql-dm_exec_connections/

ローカルで接続する場合、「名前付きパイプ」で接続する事があるらしい。
その場合、接続文字列も変わってくる。

'VBA code
con = np:sql\hoge

例えるなら、こんな感じで接続が通りました。

しかし、今度はテーブルが見つからないという。


再びググる、ググる。

すると、こんな情報が見つかりました。

【SQL Server】オブジェクト名”○○”が無効です
http://lifesiz.com/adsense/?p=30


SELECT * FROM hoge;

ではなく、

SELECT * FROM hoge_DB.dbo.hoge;

と、データベース名をきちんと明記する。

すると今度は、テーブルにアクセス出来ませんと出る。


また、ググる、ググる。

SQL Serverのオブジェクトに権限を設定する
https://www.atmarkit.co.jp/ait/articles/0111/27/news001.html


これで、必要な権限を付与し、実行すると。
無事、データにアクセスできました。

それでは。