三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

システム屋小話 目的地にたどり着くにはイロイロな方法があります

目的の処理を実行するには、
イロイロな方法があったりします。
そんなお話を少々脱線しながら・・・

www.youtube.com
【システム屋小話】目的地にたどり着くにはイロイロな方法があります 【三流君】 - YouTube


Q.町田駅から東京駅に行くには?


A1.町田 → 新宿 → 東京

町田

小田急

新宿

|JR中央線

東京

主要な駅を経由して説明しやすく間違いも少ない?
※初見だと新宿の乗り換えで迷うかも?
ぉぃぉぃそんな迷うヤツいないぞ。。。


A2.町田 → 代々木上原 → 大手町 → 東京

町田

小田急

代々木上原

東京メトロ千代田線 .

大手町

東京メトロ丸ノ内線

東京

地下鉄を組み合わせて使うパターンだけど、
なれるとカッコイイ?
※乗り換えを説明するのが面倒だったり・・・


A3.町田 → 新横浜 → 東京

町田

|JR横浜線

新横浜

|JR新幹線

東京

新幹線を使ってはいけない...
と言われていないので
料金気にしないでギャグで提案してみる


まぁ、好き嫌いはありますが、
目的地に着くには、いろいろな方法があります。

なんて、一般的な例を出しつつ、
ここから
システム屋さんプログラミングのお話に強引に移行すると、

プログラム、プログラミングも同様で、
目的の処理を実行するには、
イロイロな方法があったりします。

Q.VBAを使って、文字列(HTMLのソース)から
 .gifの画像ファイル名を探し、そのファイル番号を取り出す。
ファイル名は0.gif 1.gif ... 9.gif と 数字1文字+.gifです

例)
データ1 下記のテストデータの場合、3.gifの3を取り出す
<img src="../img/3.gif" width="20"

height="20" />

データ2 下記のテストデータの場合、5.gifの5を取り出す
<img src="../img/5.gif" width="20"

height="20" />

まぁ、みなさんの頭の中で、イロイロな処理方法が浮かんだと思います。

A1.文字列の位置が決まっているなら いつも固定なら←ココ重要
Mid関数で指定位置を抜き出す

Option Explicit

'データ1 下記のテストデータの場合、3.gifの3を取り出す
'<img src="../img/3.gif" width="20" height="20" />
'データ2 下記のテストデータの場合、5.gifの5を取り出す
'<img src="../img/5.gif" width="20" height="20" />

Const TESTDATA1 = "<img src=""../img/3.gif"" width=""20"" height=""20"" 

/>"
Const TESTDATA2 = "<img src=""../img/5.gif"" width=""20"" height=""20"" 

/>"

Sub test20160715_a1()  'MID関数を使う

    'TEST1
    Debug.Print "test1 " & TESTDATA1
    Debug.Print test_mid(TESTDATA1)  '作成した関数を呼ぶ
    
    'TEST2
    Debug.Print "test2 " & TESTDATA2
    Debug.Print test_mid(TESTDATA2)  '作成した関数を呼ぶ

End Sub

'18番目の文字を返すだけの関数
'関数にする必要もないけど・・・
Public Function test_mid(strHTML As String) As String
    Dim strRETURN As String     '戻り値
    
    '受け取った文字列の18盤目を一文字取り出し、リターン値にセット
    strRETURN = Mid(strHTML, 18, 1)
    
    'リターン値をセット
    test_mid = strRETURN

End Function



A2.n番目を探すのが面倒なので、
  InStr関数で.gifを探し、一文字前を返す

'n番目を探すのが面倒なので、
'InStr関数で.gifを探し、一文字前を返す
Public Function test_instr(strHTML As String) As String
    Dim strRETURN As String     '戻り値
    Dim n As Integer
    
    '受け取った文字列から.gifを探す
    n = InStr(strHTML, ".gif")
    
    '受け取った文字列のn盤目-1を一文字取り出し、リターン値にセット
    strRETURN = Mid(strHTML, n - 1, 1)
    
    'リターン値をセット
    test_instr = strRETURN

End Function



見ていて、おもしろかった 回答
A3.Replace関数で冒頭の固定文字を消して、頭一文字目を返す

'Replace関数で冒頭の固定文字 <img src="../img/ を消して、
'頭一文字目を返す
Public Function test_Replace(strHTML As String) As String
    Dim strRETURN As String     '戻り値
    Dim strTEMP   As String     '作業用文字列
    
    '受け取った文字列から <img src="../img/を置き換えで消す
    strTEMP = Replace(strHTML, "<img src=""../img/", "")
    Debug.Print "strtemp=" & strTEMP
    
    '↑作成した作業用文字列の左から一文字をリターン値とする
    strRETURN = Left(strTEMP, 1)
    
    'リターン値をセット
    test_Replace = strRETURN

End Function



A4.Split関数で .gifを条件に文字列を分割
分割後の右端の一文字目を返す

'Split関数で .gifを条件に文字列を分割
'分割後の右端の一文字目を返す
'<img src="../img/3.gif" width="20" height="20" />を.gifで分割
'<img src="../img/3
'と
'" width="20" height="20" /> に 分割

Public Function test_Split(strHTML As String) As String
    Dim strRETURN As String     '戻り値
    Dim strTEMP   As Variant    'Splitが可変の配列を返すのでVariant
    
    '受け取った文字列を.gifで分割
    strTEMP = Split(strHTML, ".gif")
    Debug.Print "strtemp(0)=" & strTEMP(0)
    Debug.Print "strtemp(1)=" & strTEMP(1)
    
    '↑作成した作業用文字列(0)の右端 お尻 右から一文字をリターン値とす

る
    strRETURN = Right(strTEMP(0), 1)
    
    'リターン値をセット
    test_Split = strRETURN

End Function



終わりのあいさつ

A3やA4 が 私が出会った、おもしろかったコードです。
目的地に着くには、目的を達成するには、
いろいろな方法があると思っていただければ。

が、狙いだったけど、
実際は、
・乗り換えの簡単さ ※複雑な乗り換えやコードはNG
・コスト 時間や料金 
を気にしないといけないんだけどね。

余談・脱線?:
いろいろなルート・方法の例題で
電車でいく方法を説明してたけど
極論を書くと、
予算無視、時間無視なら、、
自宅からタクシーで東京駅に行く

家の前

|タクシー

東京駅

なんて柔軟な発想もアリかな
※ぉぃぉぃ そりゃないか

みなさんも、柔軟な発想でいろいろな道を進んでくださいね。

下記、冒頭の動画と同じです
https://www.youtube.com/watch?v=0i7mehG4A-s
【システム屋小話】目的地にたどり着くにはイロイロな方法があります 【三流君】 - YouTube
www.youtube.com



次回予告

ア.固定コードは 仕様変更に弱い、バグ祭り・・・
イ.ネットの世界で関東ローカルな例題はよくないよね

二本かな。期待しないで待っててくださいね。

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)