(現在 過去ログ43 を表示中)

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

[ 親記事をトピックトップへ ]

このトピックに書きこむ

過去ログには書き込み不可

■6801 / inTopicNo.1)  日付文字列のエクセル書き出しも正常です
  
□投稿者/ Numata -(2012/01/20(Fri) 11:16:36)
    日付様の文字列(2012/01/20)を桐からエクセル書き出しを行う実験をいくつか試してみましたが、書き出し後のExcelファイルには日付文字列ではなく文字列そのものとして書き出されていました。セルの型も文字列型です。
    クロスエクセル機能はOnにしていますが、エクセル書き出しには文字列優先などのパラメータは記述していません。

    エクセル書き出しというコマンドに関して、なんの問題もないということになります。
    ただ、クロスエクセル機能はExcel2007とか2010向けの機能強化だと思いますが、今日の実験はExcel2003です。

    書き出し後のセル値が「="2010/01/20"」になったり「1/20/2010」になったりで困っていたんですが、
    コマンドの動作以外の問題があったのでしょう。
    この時は空ファイルのエクセル書き出しで躓いていた頃のことで、意識がセル値よりも書き出しエラーの方に向いていましたから。

    次に、同じようにセル値で問題が起きたときに、別件として改めてお尋ねさせていただきたいと思います。
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■6797 / inTopicNo.2)  文字列が、文字列のままで書き出されています
□投稿者/ Numata -(2012/01/19(Thu) 18:33:23)
    何が、どうなっているのかよく分からないんですが、
    もう1回確認と思って動かしてみると、何の問題も起きません・・・

    日付データを含むExcelファイルを桐表に変換してから、念のために項目属性変更をして文字列に固定するのは以前から措置していたことだし、今回触ったのは、試しと思ってエクセル書き出しのクロスエクセル部分のパラメータ3個を付けたり削ったりしただけです。

    ちなみに、文字列優先をするにしてもしないにしても、パラメータを書いても書かなくても、結果は同じで、日付データを含めて全く問題が見つかりません。
    ついででもないんですが、上書き後のExcelファイルの日付に見えるセルは、きっちりと「文字列」型になっています。
    そのすぐ下のセルに「1/19」などとキーボード打ち込みをしてみると、見事に「2012年1月19日」となりました。そういう書式ですから。もちろん、値は「2012/1/19」です。
    ついでのついでですが、元のセルの「2012/01/19」を日付型の書式に変更しても反映されません。入っているのはシリアル値ではなく、まさに「2012/01/19」という文字列だからでしょう。

    どうなってるんでしょう・・・
    空ファイルの件が解決してもこれが残るから、まだ先は長いと思っていましたが・・・

    ただ、この何回かの実験の途中で、突然「桐を停止します」と言われてしまいました。
    桐を再起動させれば同じように実験は続けられましたから、謂わば"良くあること"とも思いますが、何かしら、おかしいのかもしれません。

    空ファイルで悩んでいた時は、上書きが成功したファイルを見ると「1/19/2012」になってみたり、「="2012/01/19"」になってみたり、「2012/1/19」になってみたりと、どんなパターンでどんな風になるのかメモもとりにくい状態でしたのに・・・

    とにかく、もう少し様子を見る必要がありそうです。

    それと、Excel起動中でエクセル書き出しが成功した事例は、イベントでも会話処理でもダメでしたね。どっちも、エラー233でアウトでした。
引用返信 [メール受信/OFF] 削除キー/
■6796 / inTopicNo.3)  Re[13]: 見事に、空ファイルが書き出せました
□投稿者/ うにん -(2012/01/19(Thu) 16:39:00)
    > なんでだろう。日時型で、「桐の表示形式を反映」されません。
    > 「ゼロ詰め・日まで」にしてるのに、「2011年10月 4日 0時 0分 0秒」のようになる。
    > 文字列優先すると=""が付くだけで、優先してなくても上記の形式のテキストになってます。

    よく見たら
    >書式反映 = する|しない
    >小数部の表示桁数、負符号、通貨記号を桐の表示形式と同じにして書き出す
    だから、日付の形式は指定できないんですね^^;
    計算項目を使うとかしかないのか...
    "="""+#日付([日時型],1)+""""
    で文字列優先を指定したのと同じようになる。
引用返信 [メール受信/OFF] 削除キー/
■6795 / inTopicNo.4)  Re[14]: Excelが、勝手に日付型に変えてしまいます
□投稿者/ うにん -(2012/01/19(Thu) 16:25:22)
    >>「入力する」場合なら、先にセル書式を文字列にしておかないとだめなんでしょうね。
    >
    > そうとも言えないようです。
    > Excel側で貼り付けるときに、まずそのセルを「文字列」に固定したつもりでも、貼り付けるデータが「日付に見える」場合は、Excelが勝手に日付型に変えてしまいます。

    「入力する」と言ったのは、文字通りキーボードでデータを打ち込むという意味だったのですが
    うちの環境では、テキストをコピペしても文字列のままになってます。
    桐からコピーの場合も、貼り付け先を前もって文字列にしておけば文字列のまま入ります。
    桐でセルをコピーした場合、表で表示してた通りの書式(例えばYYYY-MM-DD)になりますが、複数行選択してコピーするとなりません。(YYYY/MM/DD HH:MM:SS)

    > 桐側から「文字列優先=する」で送っても、受ける時点でExcelが勝手に日付型に変えているようです。
    受ける時点というか、新規ファイルの場合は桐がゼロからファイルを作ってるので、受けるというより開いて表示する時ってことになるでしょうけど

    > でなかったら、セル値が「"2012/01/19"」のようになってしまっています。
    「="2012/01/19"」と「=」が付いてませんか?文字列定数を使った計算式を値にしてるはずですが。
    (こっちでは何故か年月日時分秒形式になってしまうのですが。)

    クロス・エクセルで書き出ししてたら、Excelがすでに起動されているのにエラーにならなかった...あれえ?
引用返信 [メール受信/OFF] 削除キー/
■6794 / inTopicNo.5)  Excelが、勝手に日付型に変えてしまいます
□投稿者/ Numata -(2012/01/19(Thu) 11:55:48)
    > 「入力する」場合なら、先にセル書式を文字列にしておかないとだめなんでしょうね。

    そうとも言えないようです。
    Excel側で貼り付けるときに、まずそのセルを「文字列」に固定したつもりでも、貼り付けるデータが「日付に見える」場合は、Excelが勝手に日付型に変えてしまいます。
    VBAで1個ずつセルの書式設定をしておいても、同じです。
    普通のVBA命令ではこれを制御することはできないとのことですので、何かの裏技を使うしかないのでしょう。

    桐側から「文字列優先=する」で送っても、受ける時点でExcelが勝手に日付型に変えているようです。
    でなかったら、セル値が「"2012/01/19"」のようになってしまっています。
    これを文字列比較してみると、「2012/01/19」とは別物と判断されています。
    多分、日付型だからシリアル値と比較されているんでしょうね。この文字列とは確かに違いますから、イコールにはなりません。
    つまり、桐側での日付(のような文字列)は、そのままをExcelに持たせるのは、かなり難しそうです。

    桐の表示形式の反映でも、桐としては思ったように反映してくれるようにデータを送ってはいるんですが、Excel側はさらにその上を行って、何が何でも日付に"整形"しようとしているんじゃないかなと思います。
    そのため、セルに定義されている書式設定の通りに表示してしまうんじゃないでしょうか。

    Excelは、気軽に使える点では認められるんですが、唯我独尊というか・・・
引用返信 [メール受信/OFF] 削除キー/
■6793 / inTopicNo.6)  Re[12]: 見事に、空ファイルが書き出せました
□投稿者/ うにん -(2012/01/19(Thu) 11:19:34)
    >クロス・エクセル機能の「文字列優先」に飛び付いたわけです。
    なんでだろう。日時型で、「桐の表示形式を反映」されません。
    「ゼロ詰め・日まで」にしてるのに、「2011年10月 4日 0時 0分 0秒」のようになる。
    文字列優先すると=""が付くだけで、優先してなくても上記の形式のテキストになってます。

    >日付(のように見える文字列)をその通りにExcelに入れるのは至難のようです。
    > 「2012/01/19」を渡したいと思えば「"2012/01/19"」となったり「'2012/01/19」となったり・・・、「"」が邪魔です。
    「入力する」場合なら、先にセル書式を文字列にしておかないとだめなんでしょうね。
    CSV等を開くときはテキストファイルウィザードで列ごとに書式を指定できますが、
    桐から直接コピペ等すると指定する余地がないので日付に変換されてしまう。
引用返信 [メール受信/OFF] 削除キー/
■6792 / inTopicNo.7)  見事に、空ファイルが書き出せました
□投稿者/ Numata -(2012/01/19(Thu) 09:02:44)
    工夫というのは、限界がないのですね・・・
    これはお手上げだなと腹をくくっていたんですが、見事に、結果的に空ファイルが書き出せています。
    通りすがりさん、本当にありがとうございました。
    うにんさんも、いつもながらですがお手間をおかけしてありがとうございました。

    そもそもは、このExcelファイルは最大でExcelで動いている単位システムを含む4つのシステムから参照される中間ファイルなので、CSVでも何でもかまわないんですが、Excelのシステム側で日付データを取り込むものですから、クロス・エクセル機能の「文字列優先」に飛び付いたわけです。
    「これなら強制的にExcelに日付文字列を渡せる」と。
    何しろExcelの自動型変換には何度も泣かされてきて、特に日付データなどは悲惨でしたから。

    もちろん、空ファイルが書き出せるようになったからと言っても、残念ですが、日付(のように見える文字列)をその通りにExcelに入れるのは至難のようです。
    「2012/01/19」を渡したいと思えば「"2012/01/19"」となったり「'2012/01/19」となったり・・・、「"」が邪魔です。
    Excel側の問題であり、どうしても何とかしたい場合は方法がないこともなさそうですが、思いっきり面倒です。

    とにかく、桐側ではせっかくのクロス・エクセル機能をカットしなくても良さそうですので、ひとまずはホッとしています。
    後は、何とか、Excelを騙す手を考えていきます。
    ありがとうございました。
解決済み!
引用返信 [メール受信/OFF] 削除キー/
■6791 / inTopicNo.8)  Re[10]: 会話処理では書き出せないようです
□投稿者/ 通りすがり -(2012/01/18(Wed) 23:39:43)
    管理工学研究所に要望は出すとして、たぶん対応はされないと思うから、使う人が工夫すると

    編集後にレコード数がゼロの場合は、一時表ファイル作成を作成するとか
     全部文字列型で、項目名任意で、1レコードだけで、レコードデータは書き出す項目名

    エクセル書き出し 項目名行 = しない, 上書き = する
引用返信 [メール受信/OFF] 削除キー/
■6790 / inTopicNo.9)  Re[8]: 空ファイルを書き出すと「244」エラーとなります
□投稿者/ うにん -(2012/01/18(Wed) 16:38:56)
    > もしよろしければ、「空ファイルの書き出しが原因だ」と確認
    再現しました。
    会話処理の場合、補集合とか行集計は実行した後エラーになるんですが、エクセル書き出しは実行できませんね。
引用返信 [メール受信/OFF] 削除キー/
■6789 / inTopicNo.10)  会話処理では書き出せないようです
□投稿者/ Numata -(2012/01/17(Tue) 18:19:15)
    連続投稿になり、申し訳ありません。

    会話処理で確かめてみたんですが、
    確かに空ファイルでは「エクセル書き出し」がグレー表示となり、使えないですね。

    おもしろい発見と、言えるのかもしれませんが、
    クロスエクセルのチェックを入れても外しても、空ファイルのエクセル書き出しは会話処理ではできませんが、コードに書いておけばできる、ということになってしまいますね。

    空ファイルを書き出すと言うことは、相手先のファイルをリセットする位の意味しかないと思いますし、実用としてはどうなんだろうという気もしますが、やろうとするなら不可能ではない、くらいのことになりますでしょうか。

    ただ、2012にバージョンアップしてせっかくクロスエクセル機能が使えるのに使わないことにするのも「なんだかな」の世界なんですが、
    何しろ、桐での編集作業の中には「項目名の変更」なんていうものまで入っていますから、あらかじめ空のExcelファイルを用意しておいて、データ全削除の時はファイルを丸ごと上書きコピーしてリセットされたように見せかける、という手も、なかなか使いづらいところなんです。
引用返信 [メール受信/OFF] 削除キー/
■6788 / inTopicNo.11)  クロス・エクセルを使わなければOKです
□投稿者/ Numata -(2012/01/17(Tue) 17:48:25)
    「244」エラーが出ている状況で、クロス・エクセル機能のチェックを外してみました。
    問題なく、正常に、項目行だけのエクセルファイルが出力されていました。

    この問題は、エクセル書き出しコマンドによるものではなく、どうもクロス・エクセル機能の問題のような気がします。
引用返信 [メール受信/OFF] 削除キー/
■6787 / inTopicNo.12)  空ファイルを書き出すと「244」エラーとなります
□投稿者/ Numata -(2012/01/17(Tue) 17:33:10)
    やっと、「244」エラーが出ました。
    空ファイルの書き出しでした。

    読み込んでから桐表でいろいろと編集作業をさせているんですが、場合によっては全データが削除され、空ファイルとなる場合があります。
    この時に、そのままエクセル書き出しを行うとシステムエラー「244」となります。
    恐らくは、桐2012とか、Excel2007などは、関係ないのでしょう。

    現況ではなかなか空ファイルになることはないのでエラーなしで動いているんですが、自宅の実験環境ではサンプルデータしか入れていませんでしたので、空ファイルになったものと思われます。

    ところで、この処理の目的が、
    Excelファイルの内容を桐で編集して、エクセル書き出しを行うことで結果的にExc"編集できた"、という状況を作り出したい
    というものですから、桐での編集後に空ファイルになれば、それを書き戻すことでExcelファイルも項目行だけにしたいという要求になります。

    ヘルプなどにもそのような記述はないようにも思えるんですが、
    これが、ダメとなると・・・

    どうも、根本的にやり方を変えていかないと無理なところに追い込まれそうなんですが、もしよろしければ、「空ファイルの書き出しが原因だ」と確認していただければうれしく思います。
引用返信 [メール受信/OFF] 削除キー/
■6786 / inTopicNo.13)  Re[6]: クロスエクセル機能でエラーが出ます
□投稿者/ うにん -(2012/01/17(Tue) 13:18:33)
    > うちの環境でエクセルコマンドを実験したら、即座に桐がこけてしまい244は再現できませんでした。(Vista+2009a+Excel2007)

    これは、コマンド検索からペーストした後
    強制改行文字=""
    でやってたのが原因でした。
    桐ってこんなにもろかったっけ^^;
    ヘルプにはこのオプションが書いてないですね。

    結局233のエラーしか出ませんでした。
引用返信 [メール受信/OFF] 削除キー/
■6782 / inTopicNo.14)  正常に動作しています
□投稿者/ Numata -(2012/01/16(Mon) 18:11:19)
    先ほどの処理の部分を、エラーとなっていたコードから1行ずつをコピーしてきて確かめていたんですが、
    結局はエラーにはならず、結果的には元のコードと同じものになってしまいました。

    訳がわからず、退避しておいたコードを走らせてみると、正常です。
    昨日の時点で、クロスエクセルにチェックを入れればエラーになっていたコードです。

    思い当たることは、クロスエクセルのチェックを外して使うしかないと思いましたから、表整理をしたくらいのことですが、もしかするとその過程で問題となっていた部分を修正して"しまった"のかもしれません。
    桐そのものからのエラーは返らず、ただExcel書き出しで実行リターンに244が返ってきていただけでしたので、Excelのファイルが壊れていたとも考えられますので、何回か作り直しはしました。
    それが正常に動くようになった理由かもしれません。
    それと、何回かは実行リターンに「1109」が返ってきていました。
    この内容がなんなのかは分かりませんが、このために、Excel側の問題かとも疑い、ファイルを作り直したり、PCの再起動をしたり、別のPCで試したりもしていたんですが、昨日、自宅のPCで試したときも244でしたので、今日、もう一度試してみたいと思います。
引用返信 [メール受信/OFF] 削除キー/
■6781 / inTopicNo.15)  イベントのコードに問題がありそうです
□投稿者/ Numata -(2012/01/16(Mon) 16:32:24)
    手続き定義開始 実験()
    &STR="テスト"
    エクセル &STR, "テスト", 表名=&STR, 上書き=する, 終了状態=&実行リターン
    行追加 終了状態=&実行リターン, [年月日]="平成24年1月16日"
    エクセル書き出し &STR, "テスト", 項目名行=する, 上書き=する, 開く=しない, 終了状態=&実行リターン
    確認 #文字列(&実行リターン)
    手続き定義終了

    イベント内から上の手続きを呼び出せば、問題なく動作しました。

    ということは、4行目の処理が問題だ、ということになります。
    それも、システムエラーを出してしまうほどの困ったコードになっているということですね。

    お手数をおかけしてしまって申し訳ありませんでした。
    原因となった部分が特定できれば、改めて報告させていただきます。
引用返信 [メール受信/OFF] 削除キー/
■6780 / inTopicNo.16)  Re[7]: クロスエクセル機能でエラーが出ます
□投稿者/ Numata -(2012/01/16(Mon) 16:02:01)
    うにんさん、ありがとうございます。

    Excel起動中でのエラーなら233ですが、244というのは「システムエラー」のようですね。
    ところで、この"システム"って、桐なんでしょうか・・・、Excelなんでしょうか・・・
    233が返る前に、244が返ってしまっている、という状況なんでしょうか。

    通りすがりさん、お手間をおかけしています。

    こちらでは、WinXP-Excel2003とWin7-Excel2007で試しています。
    まだまだ2003は現役ですからこちらがうまく行かないようでしたら、ちょっと厳しいかなと思っています。
    WinXP-Excel2003の組み合わせでは、都合、3台のPCで試してみましたが、クロスエクセルのチェックを外しておけば問題なく、チェックを戻すと、全く同じ症状が出ます。
    "Temp2012・・・・"という名前のシートが、1回の実験ごとに増えていきます。
    ・・・、だから"システムエラー"なのかとも思います。

    一括処理ではまだ試していませんが、今の構想なら、イベントの中から一括処理を呼び出すことになるので、きっと同じでしょう。
    全く独立させるのなら、ボタンでも作っておいてクリックさせることになると思いますが、チェックを外しておけば問題が出ない今の状況では、わざわざクリックを要求するのもカッコの悪い話です。

    もう少し試してみて、どうしても解決しない場合は、サポートへ問い合わせ、となるのかもしれません。
引用返信 [メール受信/OFF] 削除キー/
■6779 / inTopicNo.17)  Re[6]: クロスエクセル機能でエラーが出ます
□投稿者/ 通りすがり -(2012/01/16(Mon) 13:17:45)
    いま、職場のPCで試したら、一括処理でしたら動きました
    VistaUltimate+2012+Excel2010

    エクセル "出納帳","1",表名="出納帳", 上書き=する,終了状態=&秒
    * ここの編集は不明なのでナシ
    エクセル書き出し "出納帳","1",上書き=する
引用返信 [メール受信/OFF] 削除キー/
■6775 / inTopicNo.18)  Re[5]: クロスエクセル機能でエラーが出ます
□投稿者/ うにん -(2012/01/16(Mon) 11:32:44)
    No6771に返信(Numataさんの記事)
    >>イベントは非同期処理だからクロスエクセル機能の終了を待ってられないんじゃないの?
    >
    > そうだと思います。
    > 読み込みとか書き出しコマンドが1個だけなら問題なく動作していますから。

    クロスエクセルを使うかどうかと関係なく、エクセル書き出しを連続すると
    エラー233になるので、233の間は繰り返しで再試行すればいいでしょう。

    と思ったけど、233でなく244になるんですね。
    うちの環境でエクセルコマンドを実験したら、即座に桐がこけてしまい244は再現できませんでした。(Vista+2009a+Excel2007)
    会話処理で変換しても問題ないんですが...
引用返信 [メール受信/OFF] 削除キー/
■6771 / inTopicNo.19)  Re[4]: クロスエクセル機能でエラーが出ます
□投稿者/ Numata -(2012/01/15(Sun) 11:52:29)
    > イベントは非同期処理だからクロスエクセル機能の終了を待ってられないんじゃないの?

    そうだと思います。
    読み込みとか書き出しコマンドが1個だけなら問題なく動作していますから。

    タイマーをかますとかの方法で、いわば、桐をだます、みたいな工夫しか仕方ないのかもしれないですね。
    狙っている効果が「操作する人間に気付かれないで・・・」となると、ちょっと苦しい気がします。

    もう少し、いろいろと試してみます。
引用返信 [メール受信/OFF] 削除キー/
■6767 / inTopicNo.20)  Re[3]: クロスエクセル機能でエラーが出ます
□投稿者/ 通りすがり -(2012/01/14(Sat) 09:02:19)
    × クロスエクセル機能は非同期処理じゃないの?
    イベントは非同期処理だからクロスエクセル機能の終了を待ってられないんじゃないの?
    と感じたんだけど

    一括処理でもダメですかね?
    試してあげれる時間がなくてゴメンネ
引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>
Mode/  Pass/

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

- Child Tree -
- Antispam Version -