2017年11月30日

【Access】テキストボックスに定形入力の設定をする


テキストボックスに決まった形で入力させたい場合があります。そういった場合は、テキストボックスに定形入力の設定を行っておくといいです。

たとえば、次のようなフォームに郵便番号を入力させるテキストボックス(textZipcode)が貼り付けてあるとします。


このテキストボックスに定形入力を設定してみたいと思います。

Private Sub Form_Load()

    '郵便番号の定形入力
    Me.textZipcode.InputMask = "000-0000;0;""_"""
    
End Sub
まず、設定値の「;」で区切られた最初のセクションに定形入力を指定します。今回指定してる「0」は0~9の半角数字を入力できることを意味しています。
次の2番目のセクションは、入力されたデータの方法です。「0」を指定すると入力された値と一緒に表示されてる文字もすべて保存されます。「1」を指定するか省略すると入力された文字だけが保存されます。
そして、3番目のセクションは、定形入力書式に含まれるスペースを示すための文字です。ダブルクォーテーションで囲む必要があります。

その他の定形入力で使える文字については、下記のサイトを参考にしてみてください。
TextBox.InputMask プロパティ (Access) | MSDN


実行結果







2017年11月29日

【PowerShell】Wordに貼り付けた画像を変更する


Wordに貼り付けた画像を変更するスクリプトを作ってみました。


たとえば、このような「猫」の画像を変更して「クラゲ」の画像にしてみたいと思います。

$word = New-Object -ComObject "Word.Application"
$word.Visible = $true
$word.Documents.Open("C:\work\word\test02.docx")

#位置やサイズを記憶
$left = $word.ActiveDocument.Shapes(1).Left
$top = $word.ActiveDocument.Shapes(1).Top
$width = $word.ActiveDocument.Shapes(1).Width
$height = $word.ActiveDocument.Shapes(1).Height

#一度削除する
$word.ActiveDocument.Shapes(1).Delete

#再度画像を貼り付け
$word.ActiveDocument.Shapes.AddPicture("C:\work\word\kurage.jpg", $false, $true, $left, $top, $width, $height)
ポイントは、一度画像を削除してから、再度画像を貼り付けてるところです。どうやら既存のオブジェクトの画像を変更することは出来ないようです。

実行結果







2017年11月28日

【Access】テキストボックスのIMEモードを切り替える


テキストボックスのIMEモードの切り替え方法です。

たとえば、このようなフォームにテキストボックス(textName、textTel、textAddress)が貼り付けてあるとします。




これらのテキストボックスのIMEモードを設定するには次のように記述します。
Private Sub Form_Load()

    'ひらがなモード
    Me.textName.IMEMode = acImeModeHiragana
    
    '半角英数モード
    Me.textTel.IMEMode = acImeModeAlpha
    
    'ひらがなモード
    Me.textAddress.IMEMode = acImeModeHiragana
    
End Sub
テキストボックスのIMEModeプロパティに値を指定することでモードを切り替えることが出来ます。


IMEModeプロパティで指定できる値は次ようになっています。
定数説明
acImeModeNoControlIME 入力モードを指定しません。(既定値)0
acImeModeOnIME 入力モードをオンにします。1
acImeModeOffIME 入力モードをオフにします。2
acImeModeDisableIME 入力モードを使用できなくします。3
acImeModeHiragana全角ひらがなを指定します。4
acImeModeKatakana全角カタカナを指定します。5
acImeModeKatakanaHalf半角カタカナを指定します。6
acImeModeAlphaFull全角英数を指定します。7
acImeModeAlpha半角英数を指定します。8
acImeModeHangulFull全角ハングルを指定します。9
acImeModeHangul半角ハングルを指定します。10


実行結果







2017年11月27日

【Access】テキストボックスに複数行入力できるようにする


テキストボックスは初期状態だと1行しか入力できないのですが、設定で複数行入力できるようになります。

たとえば、このようなフォームにテキストボックス(textMemo)が貼り付けてあるとします。


このテキストボックスを複数行入力できるようにするには次ように設定を行います。
Private Sub Form_Load()

    Me.textMemo.EnterKeyBehavior = True
    
End Sub


実行結果







2017年11月26日

【Android】メモ帳のバックアップを取る






今日、スマホアプリのデータをバックアップしていたのですが、「メモ帳」のバックアップ方法がよく分からず思わぬ苦労をしてしまいました。

この「メモ帳」のアプリ自体にバックアップ機能がありませんですし、実際にデータがどこに保存されているのかもよく分かりません。

うーん、困ったな。。。

データを1件ずつメールやシェア機能で保存するしかないのか。。。

でも、150件ぐらいあるし、ひとつひとつ保存するの地獄だな。。。

なんて、思っていたところこんなものを見つけてしまいました。

2017年11月25日

【PowerShell】ファイルを読み込み16進数でバイナリ表示する


ファイルを読み込みこんで、16進数でバイナリ表示するスクリプトを作ってみました。




ためしに、今回このようなテキストファイルを変換してみます。

$file = "C:\work\test.txt"

[Byte[]]$data = Get-Content $file -Encoding Byte

$buf = ''
$cnt = 0

Write-Host

foreach($a in $data)
{
    $buf = $buf + ' ' + $a.ToString("X2")     
    $cnt += 1
    if ($cnt -eq 16)
    {
        Write-Host $buf
        $buf = ''
        $cnt = 0 
    }
}

Write-Host $buf
まず、Get-Contentを使ってファイルをバイト配列に格納します。そして、あとは順番に読み込み16進数表記で出力しています。また、プロンプトへの表示はバイナリエディタぽく16バイトずつ表示するようにしました。


実行結果







2017年11月24日

【Access】チェックボックスの値を設定する


チェックボックスの値は、Valueプロパティで設定します。

たとえば、フォームを開いたときにチェックボックスの初期値を設定するには次にように行います。
Private Sub Form_Load()

    '初期値設定
    Me.checkBox1.Value = True
    Me.checkBox2.Value = False
    Me.checkBox3.Value = True
    
End Sub
チェックボックスは、Trueでチェックが入っている状態、Falseでチェックが入っていない状態を表します。

2017年11月23日

【Access】チェックボックスの値を取得する



チェックボックスの値を取得する方法です。

たとえば、このようなフォームにチェックボックス(checkBox1~3)とボタン(buttonOrder)が貼り付けてあるとします。


このボタンをクリックしたときに、チェックが入っているチェックボックスのラベルのキャプションをメッセージボックスに表示してみます。
Private Sub buttonOrder_Click()

    Dim msg As String
    
    If Me.checkBox1.Value Then
        
        msg = Controls(Me.checkBox1.LabelName).Caption & vbCrLf
        
    End If
    
    If Me.checkBox2.Value Then
    
        msg = msg & Controls(Me.checkBox2.LabelName).Caption & vbCrLf
        
    End If
    
    If Me.checkBox3.Value Then
    
        msg = msg & Controls(Me.checkBox3.LabelName).Caption
        
    End If
    
    MsgBox msg
    
End Sub
チェックボックスの値は、Valueプロパティで取得することが出来ます。チェックが入っている場合はTrue、入っていない場合はFalseになります。




ちなみに各チェックボックスはフォーム読み込み時にオフにしています。
Private Sub Form_Load()

    '初期設定(OFF)
    Me.checkBox1.Value = False
    Me.checkBox2.Value = False
    Me.checkBox3.Value = False
    
End Sub


実行結果


注文ボタンをクリックすると、








2017年11月22日

【PowerShell】対象のフォルダ内のファイルを一括で読み取り専用にする


対象のフォルダ内のファイルを一括で読み取り専用にする方法です。

たとえば、フォルダにこのように複数のファイルがあるとします。
PS C:\work\test> Get-ChildItem


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2017/10/04     21:04           5544 error001.txt
-a----       2017/10/04     21:05           7392 error002.txt
-a----       2017/10/04     21:05           1848 error003.txt
-a----       2017/10/04     21:05           3696 error004.txt
-a----       2017/10/04     21:05          11088 error005.txt
-a----       2017/10/04     21:05          11088 error006.txt
-a----       2017/10/04     21:06           5544 error007.txt
-a----       2017/10/04     21:06           3696 error008.txt
-a----       2017/10/04     21:06          14784 error009.txt
-a----       2017/10/04     21:06           9240 error010.txt


このフォルダ内のファイルを一括で読み取り専用にするには次のように実行します。
PS C:\work\test> Get-ChildItem -Recurse | %{Set-ItemProperty $_.fullname -Name Attributes  -Value "Readonly"}


もう一度Get-ChildItemで確認してみると、
PS C:\work\test> Get-ChildItem


    ディレクトリ: C:\work\test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
--r---       2017/10/04     21:04           5544 error001.txt
--r---       2017/10/04     21:05           7392 error002.txt
--r---       2017/10/04     21:05           1848 error003.txt
--r---       2017/10/04     21:05           3696 error004.txt
--r---       2017/10/04     21:05          11088 error005.txt
--r---       2017/10/04     21:05          11088 error006.txt
--r---       2017/10/04     21:06           5544 error007.txt
--r---       2017/10/04     21:06           3696 error008.txt
--r---       2017/10/04     21:06          14784 error009.txt
--r---       2017/10/04     21:06           9240 error010.txt
読み取り専用に変更されました。






2017年11月21日

【Access】トグルボタンのベベル効果を設定する


トグルボタンのベベル効果の設定です。

ベベル効果は次の表のとおりとなっています。
効果
0なし
1
2額縁風
3交差
4クールスラント
5角度
6ソフトラウンド
7浮き上がり
8スロープ
9切り込み
10スケール
11ハードエッジ
12アールデコ


実際のイメージは次のような感じになります。

0 なし


Me.toggle1.Bevel = 0
Me.toggle1.Caption = "なし"


1 円


Me.toggle1.Bevel = 1
Me.toggle1.Caption = "円"


2 額縁風


Me.toggle1.Bevel = 2
Me.toggle1.Caption = "額縁風"


3 交差


Me.toggle1.Bevel = 3
Me.toggle1.Caption = "交差"


4 クール スラント


Me.toggle1.Bevel = 4
Me.toggle1.Caption = "クールスラント"


5 角度


Me.toggle1.Bevel = 5
Me.toggle1.Caption = "角度"


6 ソフト ラウンド


Me.toggle1.Bevel = 6
Me.toggle1.Caption = "ソフトラウンド"


7 浮き上がり


Me.toggle1.Bevel = 7
Me.toggle1.Caption = "浮き上がり"


8 スロープ


Me.toggle1.Bevel = 8
Me.toggle1.Caption = "スロープ"


9 切り込み


Me.toggle1.Bevel = 9
Me.toggle1.Caption = "切り込み"


10 スケール


Me.toggle1.Bevel = 10
Me.toggle1.Caption = "スケール"


11 ハード エッジ


Me.toggle1.Bevel = 11
Me.toggle1.Caption = "ハードエッジ"


12 アール デコ


Me.toggle1.Bevel = 12
Me.toggle1.Caption = "アールデコ"


<関連記事>
【Access】トグルボタンのオン・オフのときの表示を変える






2017年11月20日

【Access】トグルボタンのオン・オフのときの表示を変える


トグルボタンのオン・オフのときの表示を変える方法です。

たとえば、このようなフォームにトグルボタンが貼り付けてあるとします。


このトグルボタンをオン・オフしたときに、ボタンのキャプションと前景色を変更するには次のように記述します。
Private Sub toggle1_AfterUpdate()

    If Me.toggle1.Value Then
        'ON
        Me.toggle1.Caption = "ON"
        Me.toggle1.ForeColor = RGB(255, 0, 0)
    Else
        'OFF
        Me.toggle1.Caption = "OFF"
        Me.toggle1.ForeColor = RGB(0, 0, 0)
    End If
    
End Sub
イベントは、更新後処理です。
ボタンが押されているか押されてないかは、Valueプロパティで判断します。
ValueがTrueなら押されている。ValueがFalseなら押されていないことになります。

2017年11月19日

【PowerShell】Windowsフォームにテキストボックスを表示して入力できるようにする


前回、『Windowsフォームを作成する』でWindowsフォームの表示をしてみましたが、今回は、Windowsフォームにテキストボックスを表示して入力できるようにしてみました。

まあ、マイクロソフトの下記のサイトのコードをほぼパクッてるんですが、テキストボックスをマルチラインにしたり若干アレンジを加えてますのでよかったら参考にしてみてください。
https://docs.microsoft.com/ja-jp/powershell/scripting/getting-started/cookbooks/creating-a-custom-input-box?view=powershell-5.1

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

#フォーム
$form = New-Object System.Windows.Forms.Form 
$form.Text = "入力フォーム作成テスト"
$form.Size = New-Object System.Drawing.Size(400,240) 
$form.StartPosition = "CenterScreen"

#ラベル
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(20,20) 
$label.Size = New-Object System.Drawing.Size(340,20) 
$label.Text = "何か入力してください"
$form.Controls.Add($label) 

#テキストボックス
$textBox = New-Object System.Windows.Forms.TextBox 
$textBox.Location = New-Object System.Drawing.Point(20,40) 
$textBox.Multiline = $True
$textBox.AcceptsReturn = $True
$textBox.AcceptsTab = $True
$textBox.WordWrap = $True
$textBox.ScrollBars = [System.Windows.Forms.ScrollBars]::Vertical
$textBox.Anchor = (([System.Windows.Forms.AnchorStyles]::Left) `
              -bor ([System.Windows.Forms.AnchorStyles]::Top) `
              -bor ([System.Windows.Forms.AnchorStyles]::Right) `
              -bor ([System.Windows.Forms.AnchorStyles]::Bottom))
$textBox.Size = New-Object System.Drawing.Size(340,100) 
$form.Controls.Add($textBox) 

#OKボタン
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(200,160)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Anchor = (([System.Windows.Forms.AnchorStyles]::Right) `
               -bor ([System.Windows.Forms.AnchorStyles]::Bottom))
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

#キャンセルボタン
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(285,160)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Anchor = (([System.Windows.Forms.AnchorStyles]::Right) `
                   -bor ([System.Windows.Forms.AnchorStyles]::Bottom))
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

#フォームを常に手前に表示
$form.Topmost = $True

#フォームをアクティブにし、テキストボックスにフォーカスを設定
$form.Add_Shown({$textBox.Select()})

#フォームを表示
$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
    #OKボタンが押された場合、テキストボックスの内容を取得
    $x = $textBox.Text
    $x
}

実行結果







2017年11月18日

【サクラエディタ】矩形選択からの置換




サクラエディタには矩形(くけい)選択という便利な機能があります。

矩形選択とは文字通り長方形の形での選択のことを言います。
そして、これがどうして便利かというと、文字列を列単位でコピーしたり切り取ったり貼り付けたり、または挿入することが出来るからです。あまり使う機会はないかもしれませんが、この機能があると作業が一気に楽になります。


たとえば、このようなカンマ区切りの文字列があったとします。



この文字列の左から4列目の「11111」の部分を「aaaaa」に置換するには次の行います。


まず、矩形選択の始まりの箇所にカーソルを合わせます。



カーソルを合わせたら、ここで [Shift]キー + [F6]キー を押します。

矩形範囲選択モード
[Shift] + [F6]


すると、矩形範囲選択モードに変わりますので、矢印キーを使い対象の部分を選択していきます。



このような感じで「11111」の部分だけ選択できました。



選択できたら次に「a」の文字を入力していきます。


5回「a」を入力するこのような状態になります。



最後に[Delete]キーを押して、選択されてる「11111」の部分を削除するとこのようになります。



<参考サイト>
矩形選択 | サクラエディタヘルプ

<関連記事>
【サクラエディタ】矩形貼り付けを行う
【サクラエディタ】1から順番に数字を縦に出力するマクロ
【サクラエディタ】タブの切り替えを行うショートカット
【サクラエディタ】新規作成するショートカット
【サクラエディタ】矩形選択からの置換
【サクラエディタ】PPAマクロを使ってみる


2017年11月17日

【Access】タブコントロールでタブにマウスカーソルを重ねたときに文字色を変える


タブコントロールでタブにマウスカーソルを重ねたときに文字色を変える方法です。

たとえば、このようなタブコントロールが貼り付けてあるフォールがあるとします。



このタブコントロールのタブにマウスカーソルを重ねたときに文字色を「赤」にするには次のように記述します。
Private Sub Form_Load()

    Me.tabCtrl.HoverForeColor = RGB(255, 0, 0)
    
End Sub

実行結果