e桐へ

1−3.フォームを作成して、エクセル取り込みを


ここからは、フォームとイベントを利用していきます

まず、フォームを作成してみます。名前は、"エクセル取込.wfm"と、してください

フォーム新規作成ウイザードを利用すれば簡単です。事前に、「エクセル取込.tbl」が出来てることが前提です。方法は、

フォーム新規作成 → 一覧表 → 表ファイル名で、「エクセル取込.tbl」を選びます → 使用する項目は全部「>>」を、選択 ・・以上で完成です。


 

もし余分な、物がありましたら、削除等しておいて下さい。またサイズ(グリッド)は、縦横共に「10」になってますので参考にして下さい

次にコマンドボタン他を配置します(上図の右上部分です)

  全体図



フォームの仕様


ヘッダ部
  • 高さ 70pt
  • オブジェクト(テキスト・ボタン類) 高さ 19pt
  • オブジェクト(ラベル類) 高さ 20p

明細部
  • 高さ 20pt 繰り返し 15
  • 幅 番号 40pt・名前 90pt・国語〜平均 45pt・sheet名 70pt・book名 75pt

フッタ部
  • 高さ 10pt
  • オブジェクトは、ありません


コマンドボタン周辺




各オブジェクトの、名称・ソース(標題)・目的等
場所 種類 名称 ソース(標題) 目的・機能・役目
左上 ラベル aファイル名 ファイル名    
テキスト tファイル名 &book名 入力支援を利用して、エクセルファイルを選択します @
入力支援ボタン sbファイル名   ファイル名選択(*.xls)  
左下 ラベル aシート名 シート名    
テキスト tシート名 &sheet名 入力支援を利用して、シート名を選択します  
入力支援ボタン sbシート名   ドロップダウンリスト(最初からリストを入力) A
中上 コマンドボタン b読込 読込 &book名とsheet名を利用して、エクセルデータを読み込みます B
中下 コマンドボタン b確認 確認 &book名を利用して、エクセルで開きます  
右上 コマンドボタン b削除 削除 全行削除(完成までは、一番役にたつ機能です)  
右下 コマンドボタン b終了 終了 フォームを、閉じます  

最初は、@「&book名="サンプルA.xls"」・A「&sheet名="1学期中間"」として、固定しておきます
詳しくは次のイベントで説明します。まだ、ここでは、2つとも入力支援ボタンは利用しません。

Bコマンドボタン「b読込」は、機能名とパラメータに「手続き実行・エクセル読込」を、設定してください
フォームはできましたか? 

イベントの説明


イベントファイルの名前は、"エクセル取込.kev"と、してください。
 (イベントは、エクセル読み込みと、書き出しの為の最小限を作成します)
 注意:本来「フォーム」等は半角カナですが、全角で表示しています。


名札 メイン・・・ここで、変数の宣言をします
  • 文字列・・「&book名・&sheet名」
  • 数値・・「&終了」
手続き定義開始 フォーム開始・・・変数(&book名・&sheet名)に、ファイル名等を代入を行います。「名札 メイン」で行っても、いいです


手続き定義開始 エクセル読込・・・・・コマンドボタンで、手続き実行で呼ばれるのは、ここだけです。
  エクセルファイルを実際に読込む、内容を定義していきます。すでに、一括処理で読み込む方法は確認済みですが

  • 本当は、ファイル名や、シート名などの確認がとれればいいですね。
    今回は、間違いなくあるものを、行う訳ですから、ここは、省略してもいいです

      if(#ファイルサイズ(&book名)>1 .and #LC2(#ファイル名(&book名,4))="xls" .and &sheet名<>#u)
        エクセル &book名,&sheet名,項目名行=する,表名="エクセル$$$$.tbl",上書き=する,終了状態=&終了
      else
        確認 "ファイル名またはシート名が、不適当です"
        手続き終了
      end

  • この後に、例の「if文」を、記載します
      if(&終了<>0)
        if(&終了=102)
          確認 "102:<ワークブック名>で指定したファイルが存在しない。"
        else if(&終了=134)
          ・・・・・・・以下省略・・・・・・
        else
          確認 #文字列(&終了)+":その他のエラー。"
        end
        手続き終了
      end

  • うまくいってたら、保存表に実際に読み込みを行います
      編集表 "エクセル取込.tbl"
      ジャンプ 行番号=終端
      読み込み 表,"エクセル$$$$.tbl",編集表=する,終了状態=&終了,*
      編集表 "エクセル$$$$.tbl"
      中止 表 編集対象表
      ファイル削除 "エクセル$$$$.tbl"

      編集表 "エクセル取込.tbl"

  • 本当は、ここで終わりですが、エクセルファイル名と、シート名を記録するように作成してみましょう
      絞り込み [名前]=#U
        行削除 *
      解除 *
      絞り込み [sheet名]=#U
        置換 [sheet名]=&sheet名
        置換 [book名]=#ファイル名(&book名,2)
        メッセージボックス "読み込み確認",\
          "『 "+#ファイル名(&book名,2)+" "+&sheet名+" 』より、\n "+#文字列(&選択件数)+" 件を、読み込みました", \
          アイコン=!,制御文字展開=する
      解除 *
一応ここまでで、説明は終了です。多少重複や遠回りもありますが、よく確認しておいて下さいね

イベントの補足。

 イベントでは汎用性を持たせる為に、また、後ほど他のファイルやシートも選択できるようにするため、名前を固定できません。その為

・一括処理で、
 >エクセル  "サンプルA.xls","1学期中間",項目名行 = する,表名 = "エクセル$$$$.tbl",上書き = する

このように、説明しましたが、イベントでは逆に変数を利用して、


 >&book名="サンプルA.xls"
 >&sheet名="1学期中間"
 >エクセル &book名,&sheet名,項目名行=する,表名="エクセル$$$$.tbl",上書き=する,終了状態=&終了

再度、変数に戻しています。ご注意下さい。

前へ上へ次へ