過去の桐井戸端BBS (桐ver.8)
4770 あるフォルダ以下のテーブルを全てcsvではき出したい。 wata 2000/02/19-18:59
こんにちは! 初めまして!桐の初心者wataともうします。
いきなりですが、少々質問があり、ここの掲示板に投稿させていただきました。

もしこの掲示板の趣旨にそぐわなかったり、何か不都合があるようでしたら、
申し訳有りませんが、削除してください。 どうもご迷惑をおかけしました。

ある日突然桐のテーブルが1000以上の入ったMOを渡されてこのシステム全体を
把握するのに苦労しています。

そこで、慣れている、EXCELLやACCESSで把握できたらなと思っています。
そのために「abc.tbl」と言うファイルは→「abc.csv」と言うファイルに
バッチ的に吐き出せる一括処理がやりたいのです。

どなたかこのような処理をする「.cmd」をご存じないでしょうか?

桐Ver8のhelpの中にある一括処理のHTMLを読みましたが、あるフォルダにある、
「.tbl」ファイルの名前を取得する関数がわからないし、かといって「ファイル名
入力」と言う関数で1つずつ指定していくのも骨が折れます。 

どなたか、このような状況を打破する、よいお考えが有れば、ご教授願いたいと思
います。 よろしくお願いします。
4773 Re:あるフォルダ以下のテーブルを全てcsvではき出したい。 kaz 2000/02/20-00:08
記事番号4770へのコメント

参考になるかどうかはわからないですが、私の場合、逆(?)のようなケースで
あるフォルダ以下のテキストファイルを桐に取り込む処理をやりました。
ファイル名を取得するには DOSコマンドを使用しました。
ディレクトリを変更して
dir > name.txt なる形でテキストにいったんおとしました。
ご質問の場合には  dir *.tbl > name.txt (名前は任意^^)でいいような
 ●ただしdosコマンドなのでロングファイルネームには対応していない●
あとは、その name.txtをメモ帳とかでいらないとこを削ってから、桐の表に
テキスト読込みしました。

その読込んだファイル名を使って、あとは一括処理を組めばできるような気がします。
繰り返し処理で、一個づつ読込んでは、CSV書き出しを行えばほぼ自動でできると
思います。
考え方だけで、いかがでしょうか。
4776 Re:あるフォルダ以下のテーブルを全てcsvではき出したい。 佐田 守弘 2000/02/20-02:46
記事番号4773へのコメント
wataさん

kazさんが書かれている様に、バッチファイルを使ってファイル名の一覧を取得するのが便利です。
基本的な考え方は、kazさんが書かれている通りなのですが、少し補足させて頂きます。

仮定として、MOのドライブはD:とします。

●MS-DOSのコマンド
dir d:\*.tbl /b /s > d:\tbllist.csv

このコマンドは、ドライブd:の中にあるファイルの種類(拡張子)がtblのファイル(つまり桐の表)を、サブディレクトリも含めて、フルパス名
付きで、ファイル名だけの情報を、同じドライブのルートに、tbllist.csvのファイルに書き出します。
例えば、次の様なリストができるはずです。

  d:\営業\日報\顧客台帳.tbl
  d:\総務\社員名簿.tbl

参考までにいえば、/bは、ファイル名だけを出力するスイッチ、/sはサブディレクトリも含めて出力するスイッチです。そして、/sを付け
ると、ルートからの絶対パス名付きで出力されます。

●Excelなどで読み込む
書き出したファイルの種別をcsvにしてありますから、そのまま他のアプリで読めるはずです。

佐田守弘(KS-00119)
4781 Re:あるフォルダ以下のテーブルを全てcsvではき出したい。 Ogo 2000/02/20-04:18
記事番号4776へのコメント

ファイルの名前の一覧を CSV にしたいのではなくて、全ての *.TBL ファイルの全データを
*.CSV で書き出したいのではないですか?

でも、*.TBL の中身を *.CSV で書き出すマクロを組むためには桐の知識が不可欠です。

>ある日突然桐のテーブルが1000以上の入ったMOを渡されてこのシステム全体を
>把握するのに苦労しています。
>
>そこで、慣れている、EXCELLやACCESSで把握できたらなと思っています。
>そのために「abc.tbl」と言うファイルは→「abc.csv」と言うファイルに
>バッチ的に吐き出せる一括処理がやりたいのです。

これで桐のマクロを組む努力をする気持ちはあるのでしょうか?

- - -

手順としては、#ファイル検索("*.TBL",n) 関数をループで使って、一時的なレスポンス
ファイルに全部を格納して行きます。
多分、そのループには当該レスポンスファイルも入るだろうから、その行は削除します。
後は、順次その *.TBL ファイル名をとり出して、拡張子を CSV に変えた名前のファイル
を書き出すだけです。

これなら、ロングファイル名ですよ。

4795 表データのcsv書き出しの事ですか 佐田 守弘 2000/02/20-23:28
記事番号4781へのコメント
Ogoさんの言う通り、質問の主旨は、指定フォルダ以下の表を一括してcsvに書き出す事の様ですね。勘違いしてました。
その方法ですが、変換を行う一括処理を作成する必要があります。もちろんそのためには、一括処理を作る技量を学ぶ必要があります。
私が桐ver.5用に作成したものはありますが、これは指定ファイルを1つだけ変換するものです(私のHPに掲載)。
これをベースに作り替えるのも1つの方法でしょう。

考え方ですが、まず前回述べた方法で、表ファイルの一覧を作ります。そして、これを桐の表に読み込みます。
この表を上から順に表の最後まで次の繰り返し処理を行います。
その繰り返し処理では、表リストから取り出した表の名称のファイルを開き、データをcsvに書き出します。
csvへの書き出しは、私が桐ver.5で行っている方法でも構いませんし、桐ver.8ではcsvを書き出すコマンドがあるので、これを使うのでも構いません。

いずれにしても、その様な一括処理を作成する必要があります。

なお、質問の主旨から見ますと、桐の知識がないので別のアプリで利用したいとの事ですが、一括処理を作成するには、桐の知識は不可欠です。
もし御自身で作成したくない場合には、作ってもらえる人に依頼して作ってもらうのも1つの方法でしょう。

佐田守弘(KS-00119)
4846 Re:表データのcsv書き出しの事ですか wata 2000/02/24-01:42
記事番号4795へのコメント
kazさん、佐田 守弘さん、Ogoさん、レスありがとうございました。
本当に感謝しています。

結局、桐Ver8の一括処理のhtml文章を読み、また、みなさんのご意見を参考にさせていただき
以下のような一括処理をつくってみました。

───────────────ココカラ────────────────
繰り返し &回数 = 1,200
  &File=#ファイル検索( "C:\syuuwa\KIRIWIN\Hozon\*.tbl" , &回数 )
  表 &File,表番号=1,モード="専有"
  &FileName=#ファイル名(&File , 2 )
  書き出し CSV,&FileName,項目名="する",表示条件="しない"
  表
繰り返し終了
────────────────ココマデ────────────────

これで一応処理はできるようですが、色々不都合があり、
結構難儀しています。(^^;

勉強はこれからですね。

桐のCSVとは通常のCSVと少し仕様が違うのかな?
K3と言うのがそれなのかな?
と思ってしまいました。

まぁ、通常の定義が自分でも良くわかりませんが(苦笑)

P.S.桐の日本語処理はスゴイみたいですね。(^^;
4849 Re:表データのcsv書き出しの事ですか 悲しげ 2000/02/24-10:09
記事番号4846へのコメント
どもっ、wataさん、(書き直しです)
余計なお世話かもしれませんが、
───────────────ココカラ────────────────
&回数=1
繰り返し
 表
 &File=#ファイル検索( "C:\syuuwa\KIRIWIN\Hozon\*.tbl" , &回数 )
 条件(&File="") 繰り返し中止  /*←ここ!*/
 表 &File,表番号=1,モード="専有"
 &FileName=#ファイル名(&File , 2 )
 書き出し CSV,&FileName,項目名="する",表示条件="しない"
 &回数=&回数+1         /*←ここ!*/
繰り返し終了
────────────────ココマデ────────────────
のようにした方が、存在しない表を開こうとしないのでベター
かもしれません。

4865 Re:表データのcsv書き出しの事ですか wata 2000/02/25-01:44
記事番号4849へのコメント
悲しげさんどうもありがとうございます。

>どもっ、wataさん、(書き直しです)
>余計なお世話かもしれませんが、

いえいえ、本当にどうもありがとうございます。
とても参考になりました。
目的がとりあえず達成できてしまうと、
ついつい、細かいところは面倒になってしまうのですね。(^^;
でも、これで使えそうです。

まだまだ、ちゃんと桐を学習しないと行けませんね。

戻る