入力欄がない「神PDF」様式の届出書申請書へAdobeReaderとExcelだけで入力フォームを作成

(起案中)

1 目的

 神エクセルは一般化したが、「神PDF」というのもある。ここでいう「神PDF」とは、官公庁で要求される届出書や申請書のうち、PDFフォームフィールドがが設けられていないPDF(AdobeAcrobatなどのソフトがなければ、いわばただの図)で提供されるものを言う。実務で扱いやすいWordやExcel形式では提供されておらず、神PDFだけで様式が提供されているケースが依然として存在する。その場合への対策を記録する。

 

2 PDF→Excelへ貼り付ける。

 adobeReaderの「編集」>「スナップショット」から、入力フォームに使いたい部分をコピーしてエクセルシートに貼り付ける。

 図の背景色を透明化しておくと、エクセルシートに馴染む。そこで、貼り付けた図をクリック>「図の書式設定」(「図の形式」)>「色」>「透明色を指定」>透明にしたい、図の背景色部分をクリックする。

 

3 テキストボックスを図の上に配置する。

 貼り付けた図の上にテキストボックスを配置。入力対象の項目欄の上にすべてテキストボックスを配置する。たとえば、入力対象が3か所あるとすれば、3項目のテキストボックスを置く。なお、図形を選択して[Ctr]+[D]で図形を簡単に複製できる。

 (あとで、テキストボックスを右クリックして、プロパティの背景色を「なし」に、枠線を「なし」にすれば貼り付けた図に直接入力したように見える)

 

4 エクセルシート上に入力フォームを作る。

 たとえば、A列を空列、B列を見出し、C2:C5エリアを入力用セル、C8:C10セルを出力用セル、D列を空列、E列以降に図を貼り付けるとする。ここでは、C列については、C2:C5セルの入力規則や表示形式を設定し、C8:C10セルに数式や表示形式を設定したとする。

 

5 テキストボックスに計算結果を表示させる。

 たとえば、出力用セルC8セルの内容を表示させるなら、対象のテキストボックスをクリックしてから、数式バーに「=C8」と入力する。他のC9、C10も同じ。

 図、テキストボックスのサイズ、位置、文字フォントを調整。図、テキストボックスをすべて選択してグループ化しておくとよい。必要に応じて、テキストボックスのプロパティから背景色の「塗りつぶし」と「枠線」を「なし」に設定する。

 

6 VBEでコードを書く。

(1)標準モジュール

起動時に、最大ウインドウサイズにして、入力フォーム内のセルを選択しておく。

Sub Auto_Open()
    'ウインドウサイズを最大化
    ActiveWindow.WindowState = xlMaximized
    '入力フォームの先頭セルを選択
    [C2].Select
End Sub

 

(2)シートモジュール

データ入力用のセル範囲を選択状態にするイベントで、Enterキーでくるくるループして入力できるようにする。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'セル範囲C2:C5のどれかを選択した場合
    If Not (Intersect(Target, Range("C2:C5")) Is Nothing) Then
        '新規イベント発生停止。SelectionChangeの二重起動防止
        Application.EnableEvents = False
        'セル範囲C2:C5を選択
        Range("C2:C5").Select
        '操作者が選択したセルをアクティブにする。
        Target.Activate
        '新規イベントの受付再開
        Application.EnableEvents = True
    End If
End Sub

(2)-2後から見直したら、C5セルでエンターを押したらC2セルに戻すマクロ(シートモジュールでworksheet_change)で十分な気がした。

(2)-3さらに後から見直したら、セル範囲をselectしておくと、入力を間違えてEnterやTabを押した後、backTabで1つ前のセルに戻れるのが良い点だった。