« 指数形式 E の意味 | トップページ | プライバシーシート2 »

2011年7月24日 (日)

プライバシーシート

役所などからの封筒や各種請求書の封筒の内側には
ランダムな模様や文字が印刷されています。
それによって中身が見えないようになっています。

ちょっと前に下の画像のようなシートが貼られた
ハガキがきました。
Vba20110724a

ランダムな模様や文字ではなく数字でした。
面白い模様だなっと思ったので
これをExcelで作ってみます。

コードはこちら

ランダムな数字を作成するコード:

Sub macro110724a()
'プライバシーシート

    Sheets.Add
    Cells.Interior.ColorIndex = 2
   
    Dim i As Integer, j As Integer
    Dim MyRange As Range
    Dim r As Range
    Dim tb As Object
    Dim d As Integer
    Dim num1 As Integer, num2 As Integer
    d = 12 '文字の大きさpt
   
    'セルの大きさ変更
    Cells.ColumnWidth = 8
    Cells.RowHeight = 30

    'ランダムな数字の行数
    num1 = Int(Cells(1, 1).Height / (d / 2)) - 1
    'ランダムな数字の横の文字数
    num2 = Int(Cells(1, 1).Width / (d / 2)) - 2
   
    Set MyRange = Range("A1:C3")
    For Each r In MyRange
        For i = 0 To num1  '行
            For j = 0 To num2 - 1 '列
                'テキストボックス作成
                Set tb = ActiveSheet.Shapes.AddTextbox( _
                    msoTextOrientationHorizontal, _
                    r.Left + j * (r.Width / num2) + d * Sgn(0.5 - Rnd) * Int(Rnd * 20) / 100, _
                    r.Top + i * (r.Height / 2 / num1) + d * Sgn(0.5 - Rnd) * Int(Rnd * 20) / 100, _
                    100, 100).DrawingObject
                        
                'ボックス内の文字列
                tb.Characters.Text = Int(Rnd * 10)
               
                'ここから
                'フォント
                With tb.Characters.Font
                    .Name = "MS Pゴシック" 'フォント名
                    .FontStyle = "太字" 'スタイル
                        '標準/斜体/太字/太字 斜体(フォントで異なる場合も)
                    .Size = d 'サイズ
                    .ColorIndex = 0 '色
                End With
               
                '配置
                With tb
                    .HorizontalAlignment = xlLeft '文字の配置-横位置
                        'xlLeft/xlCenter/xlRight/xlJustify/xlDistributed
                    .VerticalAlignment = xlTop '文字の配置-縦位置
                        'xlTop/xlCenter/xlBottom/xlJustify/xlDistributed
                    Select Case Int(Rnd * 3)
                        Case 0
                            .Orientation = xlHorizontal '方向
                        Case 1
                            .Orientation = xlVertical '方向
                        Case 2
                            .Orientation = xlUpward '方向
                        Case 3
                            .Orientation = xlDownward '方向
                    End Select
                    .AutoSize = True '自動サイズ調整
                End With
                '色と線-塗りつぶし
                With tb.ShapeRange.Fill
                    .Visible = msoFalse '色-ありなし
                End With
   
                '色と線-線
                With tb.ShapeRange.Line
                    .Visible = msoFalse '色-ありなし
                End With
   
                'ここまで
            Next j
        Next i
    Next r
   
End Sub

変数dとセルの高さと幅、
AddTextboxメソッドのLeft、Top引数の数式、
を変更すると数字の出方が変わります。

変数MyRangeで範囲をして指定ます。
ここを広範囲にすると
フリーズすることがあるかもしれません。
保存してから実行してください。

実行後はこのようになります。
Vba20110724b

ちょっと違いますかね?

市販のA4が入る封筒は紙が薄いので、
確定申告のとき中身がスケスケで
さすがにこれでは嫌だなと思った経験があります。

これをA4サイズで作成して印刷すれば、
確定申告のときなど
書類と一緒に封筒にいれるとある程度透けないと思います。

|

« 指数形式 E の意味 | トップページ | プライバシーシート2 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: プライバシーシート:

« 指数形式 E の意味 | トップページ | プライバシーシート2 »