MW211 EXIT

devlog
VBScript/Outlookメーラ起動
2021年08月03日
以下のような感じで。
┌──────────────────────────────────────┐
│Dim objOutlook: Set objOutlook = CreateObject("Outlook.Application")        │
│Dim objMail:    Set objMail = objOutlook.CreateItem(olMailItem)             │
│With objMail                                                                │
│    .BodyFormat = 1                                     'プレーンテキスト   │
│    .To = "TO宛先アドレス"                                                  │
│    .Cc = "CC宛先アドレス"                                                  │
│    .Subject = "件名"                                                       │
│    .Body = "本文"                                                          │
│    .Attachments.Add("添付ファイルのパス")                                  │
│    .ReplyRecipients.Add(.Session.CurrentUser.Address)  '返信先(自分)       │
│    .ReplyRecipients.Add("返信先アドレス")                                  │
│    .Display                                            '編集中メール起動   │
│End With                                                                    │
└──────────────────────────────────────┘
分類:WSH・VBS
Excel関数/マトリックスLOOKUP
2021年06月08日
┌────────────────┐
│    A   B   C   D   E   F   G   │
│  ┌─┬─┬─┬─┬─┬─┬─┐│
│ 1│B │ 3│B3│  │  │  │  ││
│  ├─┼─┼─┼─┼─┼─┼─┤│
│ 2│  │  │  │  │A │B │C ││
│  ├─┼─┼─┼─┼─┼─┼─┤│
│ 3│  │  │  │ 1│A1│B1│C1││
│  ├─┼─┼─┼─┼─┼─┼─┤│
│ 4│  │  │  │ 2│A2│B2│C2││
│  ├─┼─┼─┼─┼─┼─┼─┤│
│ 5│  │  │  │ 3│A3│B3│C3││
│  └─┴─┴─┴─┴─┴─┴─┘│
└────────────────┘
「A1」に横軸、「B1」に縦軸の座標をぞれぞれ指定した場合に
「C1」に結果を出力する場合、「C1」以下の数式を設定する。
┌───────────────────────────┐
│=VLOOKUP(B1,D:G,MATCH(A1,D2:G2,0),FALSE)              │
└───────────────────────────┘
分類:Excel
ExcelVBA/フォルダ移動
2021年06月03日
┌──────────────────────────────────────┐
│ChDir ThisWorkbook.Path                                                     │
└──────────────────────────────────────┘
上記でフォルダ移動ができない場合…

それは、Dドライブとかにそのファイルがある場合で
ドライブ移動も一緒にしないといけないというかもしれない。

ひとまず以下で回避できる。(Dドライブなら)
┌──────────────────────────────────────┐
│ChDir ThisWorkbook.Path                                                     │
│If Left(ThisWorkbook.Path, 1) = "D" Then                                    │
│    ChDrive Left(ThisWorkbook.Path, 1)                                      │
│End If                                                                      │
└──────────────────────────────────────┘

さて、Eドライブやネットワークドライブ(\\)の時はどうしよう?
分類:ExcelVBA
タスクスケジューラ/メッセージが出ない
2021年05月21日
Windowsタスクスケジューラで、
MsgBoxでメッセージがが出力されない場合(タスクが終了しない場合)の解決法
┌セキュリティオプション────────────────┐
│○ユーザがログオンしているときのみ実行する            │
│●ユーザがログオンしているかどうかにかかわらず実行する│
└───────────────────────────┘
  ↓
┌セキュリティオプション────────────────┐
│●ユーザがログオンしているときのみ実行する            │
│○ユーザがログオンしているかどうかにかかわらず実行する│
└───────────────────────────┘
分類:Windows
ExcelVBA/多次元連想配列
2021年04月07日
┌──────────────────────────────────────┐
│Dim ハッシュ As Object                                                      │
│Dim i As Long, キー As Variant                                              │
│Set ハッシュ = CreateObject("Scripting.Dictionary")                         │
│ハッシュ.RemoveAll  ' 参考(全削除)                                          │
│' 値設定                                                                    │
│Set ハッシュ(ハッシュ.Count) = CreateObject("Scripting.Dictionary")         │
│ハッシュ(ハッシュ.Count - 1)("名前") = "織田信長"                           │
│ハッシュ(ハッシュ.Count - 1)("住所") = "安土城"                             │
│Set ハッシュ(ハッシュ.Count) = CreateObject("Scripting.Dictionary")         │
│ハッシュ(ハッシュ.Count - 1)("名前") = "豊臣秀吉"                           │
│ハッシュ(ハッシュ.Count - 1)("住所") = "大阪城"                             │
│Set ハッシュ(ハッシュ.Count) = CreateObject("Scripting.Dictionary")         │
│ハッシュ(ハッシュ.Count - 1)("名前") = "徳川家康"                           │
│ハッシュ(ハッシュ.Count - 1)("住所") = "江戸城"                             │
├──────────────────────────────────────┤
│' 値参照(方法1)                                                             │
│For i = 0 To ハッシュ.Count - 1                                             │
│    MsgBox ハッシュ(i)("名前") & " in " & ハッシュ(i)("住所")               │
│Next i                                                                      │
│' 値参照(方法2)                                                             │
│For Each キー In ハッシュ                                                   │
│    MsgBox ハッシュ(キー)("名前") & " in " & ハッシュ(キー)("住所")         │
│Next キー                                                                   │
└──────────────────────────────────────┘
分類:ExcelVBA
MSSQL/文字列を除外した数値変換の罠
2021年03月02日
数値(実は文字列)と文字列が混在する列から、
数値だけをとりだすには、以下のように
数値以外を除外した上で、数値変換すればよいように思われる。
┌──────────────────────────────────────┐
│SELECT CONVERT([int], [列]) AS [列]                                         │
│    FROM (                                                                  │
│        VALUES ('1'),                                                       │
│               ('a')                                                        │
│    ) AS [表]([列])                                                         │
│    WHERE ISNUMERIC([列]) = 1;                                              │
└──────────────────────────────────────┘
確かに、これ単体だとうまくいく。

ところがこれをVIEWとかサブ表とかにすると、途端にエラーになる
┌──────────────────────────────────────┐
│SELECT [列]                                                                 │
│    FROM (                                                                  │
│        SELECT CONVERT([int], [列]) AS [列]                                 │
│            FROM (                                                          │
│                VALUES ('1'),                                               │
│                       ('a')                                                │
│            ) AS [表]([列])                                                 │
│            WHERE ISNUMERIC([列]) = 1                                       │
│    ) AS [表]                                                               │
│    WHERE [列] = 1;                                                         │
│//→メッセージ 245、レベル 16、状態 1、行 1                                 │
│//  varchar の値 'a' をデータ型 int に変換できませんでした。                │
└──────────────────────────────────────┘

以下のように列として仕分けしてあげないといけないようだ。
┌──────────────────────────────────────┐
│SELECT [列]                                                                 │
│    FROM (                                                                  │
│        SELECT CASE                                                         │
│                 WHEN ISNUMERIC([列]) = 1 THEN                              │
│                   CONVERT([int], [列])                                     │
│                 ELSE                                                       │
│                   NULL                                                     │
│               END AS [列]                                                  │
│            FROM (                                                          │
│                VALUES ('1'),                                               │
│                       ('a')                                                │
│            ) AS [表]([列])                                                 │
│    ) AS [表]                                                               │
│    WHERE [列] = 1;                                                         │
└──────────────────────────────────────┘
分類:MSSQL
jQuery/特定のクラスをスキップしてprevやnext
2021年02月22日
trタグでxクラスがある場合、それをスキップして次へ進む方法。

┌──────────────────────────────────────┐
│tr = tr.next('tr:not(.x)');                                                 │
└──────────────────────────────────────┘
これはダメ。次を一つだけ見て、条件一致するかを判定するだけだから。

以下のようにループさせるのがよい。
┌──────────────────────────────────────┐
│while (tr.next('tr').hasClass('x')) {                                       │
│    tr = tr.next('tr');                                                     │
│}                                                                           │
└──────────────────────────────────────┘
分類:jQuery
VBScript/連想二次元配列
2021年02月05日
キーの配下にスカラ配列がぶら下がるテーブルをクラスで実装した例。
┌──────────────────────────────────────┐
│Option Explicit                                                             │
│Dim objTable                                                                │
│Set objTable = New ClassTable                                               │
│Call objTable.Insert("尾張", "織田信長")                                    │
│Call objTable.Insert("尾張", "豊臣秀吉")                                    │
│Call objTable.Insert("三河", "徳川家康")                                    │
│Dim row, column                                                             │
│Set row = objTable.GetList("尾張")                                          │
│For Each column In row                                                      │
│    MsgBox column                                                           │
│Next                                                                        │
│Set row = objTable.GetList("三河")                                          │
│For Each column In row                                                      │
│    MsgBox column                                                           │
│Next                                                                        │
│WScript.Quit(0)                                                             │
│'***************************************************************************│
│'  クラス:連想二次元配列                                                   │
│'***************************************************************************│
│Class ClassTable                                                            │
│    Private mTable                                                          │
│    '=======================================================================│
│    '  コンストラクタ                                                       │
│    '=======================================================================│
│    Private Sub Class_Initialize                                            │
│        Set mTable = CreateObject("Scripting.Dictionary")                   │
│    End Sub                                                                 │
│    '=======================================================================│
│    '  デストラクタ                                                         │
│    '=======================================================================│
│    Private Sub Class_Terminate                                             │
│    End Sub                                                                 │
│    '=======================================================================│
│    '  メソッド:追加                                                       │
│    '=======================================================================│
│    Public Sub Insert(inKey, inValue)                                       │
│        If Not mTable.Exists(inKey) Then                                    │
│            Set mTable(inKey) = CreateObject("System.Collections.ArrayList")│
│        End If                                                              │
│        Call mTable(inKey).Add(inValue)                                     │
│    End Sub                                                                 │
│    '=======================================================================│
│    '  メソッド:取得                                                       │
│    '=======================================================================│
│    Public Function GetList(inKey)                                          │
│        Set GetList = mTable(inKey)                                         │
│    End Function                                                            │
│    '=======================================================================│
│End Class                                                                   │
│'***************************************************************************│
└──────────────────────────────────────┘
分類:WSH・VBS
MSSQL/区切り文字で結合(横)
2021年01月20日
PHPのimplode()みたいに単純に文字列で結合する方法。
┌──────────────────────────────────────┐
│SELECT CONCAT_WS(',','A','B','C')                                           │
└──────────────────────────────────────┘
分類:MSSQL
WSH/まわりのファイルを検索
2021年01月18日
そのVBScriptファイルが存在するファイルのまわりのファイルを検索する雛形。
┌──────────────────────────────────────┐
│Dim objWSH:   Set objWSH = WScript.CreateObject("WScript.Shell")            │
│Dim objShell: Set objShell = WScript.CreateObject("Shell.Application")      │
│Dim objFSO:   Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
│Dim objFolder, objFile                                                      │
│Set objFolder = objFSO.GetFolder(objWSH.CurrentDirectory)                   │
│For Each objFile In objFolder.Files                                         │
│    If objFSO.GetFileName(objFile) <> WScript.ScriptName Then               │
│        MsgBox objFSO.GetFileName(objFile)         & vbCrLf & vbCrLf _      │
│             & vbCrLf _                                                     │
│             & objFile                             & vbCrLf & vbCrLf _      │
│             & objFSO.GetParentFolderName(objFile) & vbCrLf & vbCrLf _      │
│             & objFSO.GetBaseName(objFile)         & vbCrLf & vbCrLf _      │
│             & objFSO.GetExtensionName(objFile)                             │
│    End If                                                                  │
│Next                                                                        │
└──────────────────────────────────────┘
分類:WSH・VBS
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 … 156 次へ