Excel VBA MacAddress 取得

よくありそうで すぐにつくれないので ここに記録します。

 

Private Sub mc()
  '  MsgBox (fnc_getMacAddress)
    MsgBox (fnc_GetMacAdrs)
End Sub
Public Function fnc_GetMacAdrs() As String ' ????_MAC?A?h???X????()
    Dim objConf, objMACEna, strIP
 
    Set objConf = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where (IPEnabled = TRUE)")
    For Each objMACEna In objConf
       
        For Each strIP In objMACEna.IPAddress
            fnc_GetMacAdrs = Replace(objMACEna.MACAddress, ":", "")
            Exit For
        Next
          
    Next
End Function
 
参考サイト

Excel VBA ではできないはずの 「クラスモジュールを、パラメータ付きで起動する。」

インタフェース機能で 実現しました。(2019年 初研究です)

---フォームから クラスモジュールを呼び出す処理--------------
Private Sub UserForm_Initialize()
~ 略 ~
On Error GoTo MyErr
strLEBEL = "はじめにクラスモジュールをセットする"
 ~ 略 ~
args = "M_Person"   // パラメータをセット
Set sRS = Constructor(New sqlRecordSet, args) 
      ↑ ' パラメータ "args" 付きで クラス を開く
-------------------------------------------------------------

解説: ①インタフェースをつくります。
---インタフェース----------------------------------------------
Option Explicit
Public Function Instancing(ByVal args As String) As IConstructor: End Function
--------------------------------------------------------------

解説: ②起動用のメソッドををつくります。
---標準モジュールの起動メソッド---------------------------------
Public Function Constructor(ClassObject As IConstructor, ByVal args As String) As IConstructor
  Set Constructor = ClassObject.Instancing(args)
End Function
---------------------------------------------------------------

解説: ③クラスモジュールにインタフェースを実装します。
---クラスモジュール ---------------------------------------------
'コンストラクタ---Class_Initialize()に引き続いて実行される
Public Function IConstructor_Instancing(ByVal args As String) As IConstructor
  Set IConstructor_Instancing = Me  // インタフェースを呼び出します。
  SetMe (args)   // 実際の 起動時処理を CALLします。
End Function
--------------------------------------------------

※ 参考になったサイト
<https://foolexp.wordpress.com/…/%E3%82%B3%E3%83%B3%E3%82%B…/>

SQL 規定値に関数使って作ってみた

SQL規定値を作ってみた。

以前から使っていたが、規定値内に関数が使えることを検証したかった。

内容は レコードの保存時刻を 規定値で登録する、というもの

下図:テーブル定義の 「規定値またはバインド」に 関数をいれる。

図は ユニバーサル時刻なので、9時間 +して 日本時間にしています。

f:id:nminebb:20181118111745p:plain

規定値を使うと、別のプログラムでデータインサートするときに、規定値であることを明示しておかないと、

「あれ、インサートしたのに値が違うやん!」になるので、

あえて 列名に '_DEAULT'  を付与した。

SQLで日付時刻の6分刻み文字を作る

日付時刻の6分刻み文字を作る
 
10分刻み、6分刻み といった時間枠の箱の中の イベント発生件数や 合計値を求めるために、
Where 発生時刻 >= '2017/10/07 09:06:00' and 発生時刻 < '2017/10/07 09:12:00'
とやると 実行時間が恐ろしく長くなる
 
これを回避するには、時刻を 刻み分単位に揃えて、 Group By で集計すると 実行を早くできる。
そのためには、イベント発生時刻 を 日付時刻タイプから 6分の剰余を引き算した文字列が必要になる。
 
日付のCONVERT SUBSTRING の 大売出しみたいなコードになりました。
/****** SSMS の SelectTopNRows コマンドのスクリプト ******/
SELECT getdate() as 日付
,CONVERT(VARCHAR,GETDATE(),112) as 日付文字
,convert(varchar,getdate(),108) as 時刻文字
,LEFT(convert(varchar,getdate(),108),2) as 時文字
,substring(convert(varchar,getdate(),108),4,2) as 分文字
,convert(int,substring(convert(varchar,getdate(),108),4,2)) as 分数字
,convert(int,substring(convert(varchar,getdate(),108),4,2)) % 6 as 分の6剰余
,convert(int,substring(convert(varchar,getdate(),108),4,2)) - (convert(int,substring(convert(varchar,getdate(),108),4,2)) % 6) as 分の6分刻み数字
,convert(varchar,(convert(int,substring(convert(varchar,getdate(),108),4,2)) - (convert(int,substring(convert(varchar,getdate(),108),4,2)) % 6))) as 分の6分刻み文字
 
↓ これが できたコード
,convert(varchar,getdate(),112) + left(convert(varchar,getdate(),108),2) + convert(varchar,(convert(int,substring(convert(varchar,getdate(),108),4,2)) - (convert(int,substring(convert(varchar,getdate(),108),4,2)) % 6))) as 日付時刻の6分刻み文字
 
実行結果

Facebook で 不要なログインを削除する

Facebook で自分が 移動する先々で、ログインすると、いろんな場所でログインしているようになる。

そのときは、下の方法で ログインを削除できます。

ホーム を押す

f:id:nminebb:20170827084920p:plain

 
左サイドバー  「もっと見る」を押す
 

 
支払履歴を押す

 
これで 一般設定が出てくる
これで 左サイドバーのセキュリティとログオンを押す

f:id:nminebb:20170827085028p:plain

 
つかっていない、デバイスの 右端を 右クリックして、ログアウトを押す。

f:id:nminebb:20170827094239p:plain

↑ もっと見る をひらいて すべて不要な行を消す
 
 ↓自分だけになれば 完了です。

f:id:nminebb:20170827094352p:plain

 

Facebook で 招待のスパムメール

Facebook で 招待のスパムメールが出回っているらしい。

自分の名前で、だれかが 自分の連絡先に送信するらしい。

なにはともあれ 自分の招待履歴をチェックしておきましょう。

https://www.facebook.com/invite_history.php


www.facebook.com