【JScript】スクリプトの実行

Windows上でJScriptを実行するには
コマンドプロントから実行するのが便利です。

CScript ファイル名

CScript.exeは「C:/Windows/System32」と「C:/Windows/SysWOW64」に存在しています。
環境変数の設定によりどちらかが優位性が高い設定になっています。

【サクラエディタ】マクロのショートカット登録

サクラエディタのマクロをショートカットに登録します。

  • マクロの登録
    マクロを作成後、ツールバーの「設定」-「共通設定」を選択し、「マクロ」タブを開きます。
    「マクロ一覧」にマクロの保存先ディレクトリを指定します。
    任意の番号を選択し、行をアクティブにします。
    「名前」に任意の分かりやすい名前を設定します。
    「File」に保存したマクロを選択します。
    「設定」ボタンを押下します。
    ここの「設定」ボタンを押下しないと反映されないので注意です。
  • ショートカットに登録
    「キー割り当て」タブを開きます。
    「種別」に「外部マクロ」を選択します。
    登録したマクロを選択し、キーの割り当てを選択し、「割付」ボタンを押下します。
    これでサクラエディタ上で割り当てたキーを押下すると登録したマクロが動作します。

【サクラエディタ】日付の置換マクロ(JScript版)

サクラエディタの日付を決まった値に置換。(JScript版)
置換後の日付はDB2のTimeStamp型に登録可能。
キーマクロの記録はできませんが、
JScript版なので演算や変数も利用可。

// 変数宣言
var FileName;
// すべて置換
// [0-9]{n}:0~9の数字をn回繰り返すの意味
Editor.ReplaceAll('[0-9]{4}-[0-9]{2}-[0-9]{2}-00[.]00[.]00[.]000000','2015-12-31-00.00.00.000000', 60)
// 再描画
Editor.ReDraw(0)
// すべて選択
Editor.SelectAll(0)
// 選択行の昇順ソート
Editor.SortAsc(0)
// ファイル名をフルパスで取得
FileName = GetFilename();
// ファイル名を変更
FileName = FileName.replace(".txt", "_比較用.txt");
// ファイルを保存
// 第1引数:ファイル名フルパス
// 第2引数:0はSJIS保存
// 第3引数:0は改行コードは変更しない
Editor.FileSaveAs(FileName, 0, 0);

JScriptはJavaScriptとは異なります。
JScript:Microsoftが開発したJavaScript互換のスクリプト言語
JavaScript:NetscapeとSunが共同開発したスクリプト言語

昔は利権の絡みとか色々あったんでしょうが、
今は標準仕様に準拠しているようで、書き方は同一といってもいいようです。

とはいえ、JSCriptを正式にサポートしているのはMicrosoftのみであり、
Web上でFireFoxやChromeで動作させるといった場合を考えると、
通常はJavaScriptで定義した方が良いようです。

サクラエディタのマクロはJScriptになります。

【サクラエディタ】日付の置換マクロ(キーマクロ版)

サクラエディタのキーマクロで日付を決まった値に置換。
置換後の日付はDB2のTimeStamp型に登録可能。
ツールバーの「ツール」-「キーマクロの記録開始」で記録できます。
キーマクロ版なので演算や変数は利用不可。

// すべて置換
// [0-9]{n}:0~9の数字をn回繰り返すの意味
S_ReplaceAll('[0-9]{4}-[0-9]{2}-[0-9]{2}-00[.]00[.]00[.]000000','2015-12-31-00.00.00.000000', 60)
// 再描画
S_ReDraw(0)
// すべて選択
S_SelectAll(0)
// 選択行の昇順ソート
S_SortAsc(0)

【Excel】フォルダ内のエクセルファイルに対して検索を行う

Dir関数を用いるため、ネットワーク上の長いファイルパスには未対応です。

Sub Test() 
    ' 検索速度向上のポイント
    ' 何度も登場するブックやセルは変数に格納し、メモリを参照する。
    ' 画面チラつきを防止する。

    ' 画面チラつきを防止する。
    Application.ScreenUpdating = False

    ' フォルダパスとファイル名を宣言する。
    Dim strFilePath As String
    Dim strFileNmae As String
         
    ' テキストボックスかセル入力でフォルダを指定させる。
    strFilePath = "C:\Users\test\Desktop\テストディレクトリ"
    
    ' 末尾が\ではない場合、\を追加する。(未実装)
    strFilePath = strFilePath & "\"
    
    ' 指定フォルダ内のファイル名を取得する。
    strFileName = Dir(strFilePath, vbNormal)

    ' 結果シートを変数に設定する。
    Dim resultBookSheet As Worksheet
    Set resultBookSheet = Worksheets("sheet1")
   
    ' 結果シートの行数を宣言する。
    Dim longGyo As Long
    longGyo = 1

    ' 指定フォルダ内のファイルがなくなるまで繰り返す。
    Do While strFileName <> ""

        Dim result As Range
        Dim firstAddress As String

        ' ファイルを開く。
        With Workbooks.Open(Filename:=strFilePath & strFileName)

            ' ファイル内のシート数を取得する。
            Dim sheetCnt As Long
            sheetCnt = .Worksheets.Count
           
            ' 1シート目からnシート目まで繰り返す。
            Dim i As Long
            For i = 1 To sheetCnt
                ' What:=検索するデータを指定
                ' After:=検索を開始するセルを指定
                ' LookIn:=値を検索
                ' LookAt:=一部が一致するセルを検索
                ' SearchOrder:=列単位で検索(行単位のxlByColumnsを指定しているとセル結合が検索されない)
                ' SearchDirection:=順方向に検索
                ' MatchCase:=大文字と小文字を区別しない
                ' MatchByte:=半角と全角を区別しない
                ' SearchFormat:=セル書式は検索条件に指定しない
                Set result = .Worksheets(i).Cells.Find(What:="APS" _
                    , After:=ActiveCell _
                    , LookIn:=xlValues _
                    , LookAt:=xlPart _
                    , SearchOrder:=xlByRows _
                    , SearchDirection:=xlNext _
                    , MatchCase:=False _
                    , MatchByte:=False _
                    , SearchFormat:=False)
               
                If Not result Is Nothing Then
                    firstAddress = result.Address
                    Do
                        resultBookSheet.Cells(longGyo, 1).Value = strFilePath & strFileName
                        resultBookSheet.Cells(longGyo, 2).Value = .Worksheets(i).Name
                        ' resultBookSheet.Cells(longGyo, 3).Value = "セル(" & result.Row & ", " & result.Column & ")"
                        resultBookSheet.Cells(longGyo, 3).Value = "セル(" & result.Address & ")"
                        resultBookSheet.Cells(longGyo, 4).Value = .Worksheets(i).Cells(result.Row, result.Column).Value
                        longGyo = longGyo + 1
                        Set result = .Worksheets(i).Cells.FindNext(result)
                        If result Is Nothing Then
                            Exit Do
                        End If
                        If result.Address = firstAddress Then
                            Exit Do
                        End If
                    Loop
                End If
            Next i
            
            ' 保存せずファイルを閉じる。
            .Close SaveChanges:=False
        End With

        ' 次のファイルを取得する。
        strFileName = Dir()
    Loop
        
    ' 画面チラつき防止を解除する。
    Application.ScreenUpdating = True
    
End Sub

【Word】画像の画質改善

Wordで画像を挿入後に印刷するとやけに画質が悪いと思い、
調べてみると、Word側で解像度を自動で補正しているためでした。

「ファイル」-「オプション」-「詳細設定」を選択します。
「イメージのサイズと画質」の「ファイル内のイメージを圧縮しない」をチェックします。

こうすることで、画質が劣化することがなくなります。
ファイルサイズは重くなるため、注意。

【Word】画像の挿入方法

Wordで画像を挿入した際、
画像の下側だけが表示される現象に遭遇し、その解決方法のメモ。

「ファイル」-「オプション」-「詳細設定」を選択します。
「切り取り、コピー、貼り付け」項目の
「図を挿入/貼り付ける形式」で「背面」を選択します。

ここが「行内」になっていると画像を行内に収めようと
画像の下側だけが表示されるようです。

【GIMP】画像加工その1

Photshopの代わりとして有名な画像フリーソフトのGIMPを利用しました。

  • 画像切り抜き

    1. 「ツールボックス」-「【切り抜き】オブジェクト」を選択
    2. 「値を固定」にチェック、縦横比を選択
    3. テキストボックスに「4:3」を入力
    4. 画像を選択すると、上記設定が有効になった状態で選択されるので、選択後に画像をクリック
    5. 「ツールバー」-「画像」-「画像の拡大・縮小」で「640, 480」に変更
  • 画像の角を丸める

    1. 「ツールバー」-「選択」-「角を丸める」を選択
    2. 「20%」で「OK」ボタン押下
    3. 「ツールバー」-「編集」-「コピー」を選択
    4. 「ツールバー」-「編集」-「クリップボードから生成」-「画像」を選択
    5. PNG形式で保存

【bat】エビデンスの取得効率化(全ケース)

少しでもエビデンスの取得を効率化するために、
下記手順でテストを行うことを想定。
今回は全ケースを一括実行します。

  1. 01_BEFORE_UT.batを実行
  2. テスト実行
  3. 02_AFTER_UT.batを実行

DBはDB2としています。

  • 01_BAFORE_UT.bat

    @ECHO OFF
    REM ケースごとのフォルダは作成済とします。
    REM コマンドプロンプトを立ち上げ、「db2cmd 01_BAFORE_UT.bat」で実行します。
    
    REM *************************************************************
    REM  DB設定(各自の設定に変更してください。)
    REM *************************************************************
    SET SERVER_I=XXXXX
    SET USER_ID=YYYYY
    SET USER_PASS=ZZZZZ
    
    REM *************************************************************
    REM  DB2接続
    REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
    REM    -v:コマンドテキストを標準出力にエコーする。
    REM *************************************************************
    db2 -tv connect to %SERVER_ID% user %USER_ID% using %USER_PASS%;
    
    REM *************************************************************
    REM  エビデンスフォルダ設定
    REM    /b:フルパスを表示しない。
    REM    /ad:フォルダー名のみ表示する。
    REM *************************************************************
    DIR /b /ad > file_list.txt
    SETLOCAL ENABLEDELAYEDEXPANSION
    FOR /f %%a IN (file_list.txt) DO (
        SET EVI_DIR=%%a
        SET SQL_OUTPUT=!EVI_DIR!\10_SQL_LOG_Before
        MKDIR !SQL_OUTPUT!
        ECHO !SQL_OUTPUT!
    
        REM *************************************************************
        REM  SQL実行
        REM    -t:SQLファイル内のセミコロンをステートメント終了文字とする。
        REM    -v:コマンドテキストを標準出力にエコーする。
        REM    -f:ファイル名を指定する。SQL文をファイルから読み込む。
        REM *************************************************************
        db2 -tvf select_AAA.sql > %SQL_OUTPUT%\select_AAA.log
    )
    ENDLOCAL
    DEL file_list.txt
    
    REM *************************************************************
    REM  DB2切断
    REM *************************************************************
    db2 connect reset
    
  • 02_AFTER_UT.bat
    ログフォルダの作成とログファイルの取得を追加する。