HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

■1501 / 6階層)  Excelのシート名の取得方法
□投稿者/ ONnoji -(2024/09/02(Mon) 13:13:05)
    2024/09/02(Mon) 21:00:35 編集(投稿者)

    > つまり、適切な対処法を書いた文言をオペレータに[メッセージボックス]で見せればよいのですから・・・
    >
    >  if ( &実行リターン = 0 )
    >
    >   通常の処理を実行
    >
    >  else
    >
    >   メッセージボックスを表示
    >
    >  end
    >
    > しかし、もしも、VBS または Windows PowerShell のスクリプトを絡ませると、
    >
    > 現在使用されている一括処理の内容がややこしくなるので、プログラムのメンテナンス(保守)が大変になるわけです。
    >
    > そこまで、リスクを負ってまでして、VBS または Windows PowerShell のスクリプトを利用する価値はあるのでしょうか?
    >
    > 私( ONnoji )的には、VBS または Windows PowerShell のスクリプトを利用しない方がベターだろうと思えます。

    一括処理を例に、エラーメッセージを簡単に表示する例を以下に示しますので参考にしてください。
            ・・・・・・・・・・・・・・・・・

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

     ** begin of program

     変数宣言 固有,文字列{ &Excel  = "hogehoge.xlsx" }
     変数宣言 固有,文字列{ &シート名 = "1234" }

     変数宣言 固有,文字列{ &gMsg }
     変数宣言 固有,整数 { &gErrorRefErrno }
     変数宣言 固有,長整数{ &gErrorRefLineno }
     変数宣言 固有,文字列{ &gErrorRefCmdname }
     変数宣言 固有,文字列{ &gErrorRefErrmsg }
     変数宣言 固有,文字列{ &gErrorRefDetail }


     ** 変数の値を未定義値に初期化する
     &gErrorRefErrno  = #u
     &gErrorRefLineno = #u
     &gErrorRefCmdname = #u
     &gErrorRefErrmsg = #u
     &gErrorRefDetail = #u

     エラー処理 手続き名 = "prcOnErrorExcellCommand"
     *エクセル &Excel,&シート名,項目名行=する,表名="表名.tbl",上書き="する",終了状態=&実行リターン
     エクセル &Excel,&シート名,項目名行=する,表名="表名.tbx",上書き="する"
     エラー処理 /* 解除を忘れずに */

     if ( &gErrorRefErrmsg = #u ) /* エラーメッセージが代入されていなければ */

      ** 通常処理

     else

      ** エラーの場合に else を実行

      ** エラー番号・エラーメッセージ・エラーの詳細・一括処理・行番号をメッセージボックスで表示する

      &gMsg =       "[エクセル]コマンドの実行に失敗しました。"
      &gMsg = &gMsg + "\n\nエラー番号:"    + #cond( &gErrorRefErrno > 0, "KU", 1, "KD" ) + #str( &gErrorRefErrno )
      &gMsg = &gMsg + "\n\nエラーメッセージ:" + &gErrorRefErrmsg
      &gMsg = &gMsg + "\n\nエラーの詳細:"   + &gErrorRefDetail
      &gMsg = &gMsg + "\n\n一括処理名:"    + &gErrorRefCmdname
      &gMsg = &gMsg + "\n\n行番号:"      + #str( &gErrorRefLineno )

      メッセージボックス "タイトル", &gMsg, アイコン = E, ボタン指定 = 1, 制御文字展開 = する

     end


     終了

     ** end of program

    手続き定義開始 prcOnErrorExcellCommand( )
     変数宣言 自動,文字列{ &icon, &title = "prcOnErrorExcellCommand( )", &gsg }

     エラー処理 /* ここでも解除を忘れずに */

     ** エラー番号・エラーメッセージ・エラーの詳細・一括処理・行番号を固有変数に代入する

     &gErrorRefErrno  = &errno
     &gErrorRefLineno = &lineno
     &gErrorRefCmdname = &cmdname
     &gErrorRefErrmsg = &errmsg
     &gErrorRefDetail = &detail

    手続き定義終了


    p.s.

    [エラー処理]コマンドは、非常に使い道が限られています。

    なので、むやみやたらと[エラー処理]コマンドを使うのは慎んでください。

    <参考>

    桐の釣魚大全のトップ > 目からウロコのデータベース桐プログラミング入門 パート2 より転載
    http://silicon7565.html.xdomain.jp/primer/primer_side_reader_part2.html#section13-2

    13.2 エラー処理コマンドはあるけれど
     エクセルのVBAを知っている人の場合、VBAの[ On Error ステートメント]に相当する桐のコマンドを使いたいという思う人が現れても不思議ではありません。
    実は、桐には[エラー処理]というコマンドがあります。※桐9-2012 までは非公開のコマンドでした。
    しかし、結論から申し上げると、桐でこの[エラー処理]コマンドを実行する必要はまずありません。
    その理由は、多くのコマンドにおいて、そのコマンドが実行出来たか否かの結果を変数に格納する[終了状態 = <変数名>]パラメータが用意されているからです。
    また、使用するファイルがディスクに存在しなかった場合の対処に使用するのもNGです。
    その場合には、#ファイルサイズ( )という関数を使用して判定できますゾ。(^^ok
    なによりも厄介なのは[エラー処理]コマンドを使うと、単純なスペルミスによる文法エラーも拾ってしまうのです。
    そうなると、何が何だかサッパリ分からなくなってプログラムのテスト(デバッグ)どころではなくなってしまいます。
    ということで、初級者は[エラー処理]コマンドを使わないと覚えてください。

    p.p.s.

    > 桐の中で処理できるようなことを考えます。

    「エラーする前に先回りして処置したい」という気持ちは確かによく分かります。

    しかし、今回の場合には「エラーする前に先回りして処置する」という行為が、桐の単独で出来ません。

    なので、先回りせずに、素直に「エラーまんねん。エラーでっせ。エラーちゅ−てんねん。エラーまんにゃわ。!」と表示することで、

    現行で使用している一括処理のメンテナンス(保守)が容易になると思いますよ。

874×515 => 250×147

1725278382.jpg
/84KB
[メール受信/OFF] 削除キー/

→Re[7]: Excelのシート名の取得方法 /田代正美
 
前の記事(元になった記事) 次の記事(この記事の返信)
上記関連ツリー

Nomal Excelのシート名の取得方法 / 田代正美 (24/08/29(Thu) 10:47) #1495
Nomal Re[1]: Excelのシート名の取得方法 / ONnoji (24/08/30(Fri) 09:25) #1496
  └Nomal Re[2]: Excelのシート名の取得方法 / 田代正美 (24/08/30(Fri) 10:02) #1497
    └Nomal Re[3]: Excelのシート名の取得方法 / ONnoji (24/08/30(Fri) 12:14) #1498
      └Nomal Re[4]: Excelのシート名の取得方法 / 田代正美 (24/09/01(Sun) 09:03) #1499
        └Nomal Re[5]: Excelのシート名の取得方法 / ONnoji (24/09/02(Mon) 06:55) #1500
          └Nomal Excelのシート名の取得方法 / ONnoji (24/09/02(Mon) 13:13) #1501 1725278382.jpg/84KB ←Now
            └Nomal Re[7]: Excelのシート名の取得方法 / 田代正美 (24/09/05(Thu) 08:34) #1502
              └Nomal Re[8]: Excelのシート名の取得方法 / ONnoji (24/09/05(Thu) 11:29) #1503
                └Nomal Re[9]: Excelのシート名の取得方法 / 田代正美 (24/09/06(Fri) 09:11) #1504

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -