過去の桐井戸端BBS (桐ver.9) |
26400 | シェル実行でEXCELを起動したときテキストウィザードが表示されるようにしたい | katsuyoshi | 2004/05/20-19:06 |
たびたびお世話になります。 また悩んでいます。 V9-2004です。 フォームのコマンドボタンでk3フォーマットファイルを EXCELで開きたいのですがEXCELのテキストウィザードが 開かずに読み込まれカンマによる区切りができません 機能名 シェル実行 パラ "C:\ProgramFiles\MicrosoftOffice \OFFICE\EXCEL.EXE","d:\フォルダー名 \サブフォルダー名\ファイル名.k3" EXCELのセルA列に全部読み込まれます。 普通にEXCELを起動して開けばテキストウェザードが 表示されます。 どういう記述だとうまくカンマ区切りで読み込むのか教えてください。 お願いします。 | |||
26401 | Re:シェル実行でEXCELを操作したい | うにん | 2004/05/20-22:06 |
記事番号26400へのコメント K3ファイルをやめて、テキスト書き出しにてタブ区切りにするのが簡単です。 | |||
26402 | Re:シェル実行でEXCELを操作したい | katsuyoshi | 2004/05/21-02:08 |
記事番号26401へのコメント うにんさん ありがとうございました。 >K3ファイルをやめて、テキスト書き出しにてタブ区切りにするのが簡単です。 > EXCELを起動してからTXTを開くとテキストファイルウィザードが開き項目毎に データ型を指定できますが桐のシェル実行からTXTファイルを開くとテキストファイルウィザードが 開かれずに読み込まれます。 項目の中に文字列(たとえば"001"のようなデータ)がありますが読み込まれたときは数値と見なされ1となります。 これを"001"と読み込みたいのでテキストファイルウィザード経由で読み込みを実行したいのですが 桐のシェル実行からはできないのでしょうか。 | |||
26406 | Re:シェル実行でEXCELを操作したい | hidetake | 2004/05/21-08:39 |
記事番号26402へのコメント katsuyoshiさん >項目の中に文字列(たとえば"001"のようなデータ)がありますが読み込まれた >ときは数値と見なされ1となります。 >これを"001"と読み込みたいのでテキストファイルウィザード経由で読み込みを >実行したいのですが桐のシェル実行からはできないのでしょうか。 この辺の話題は下記にもあり、1つの答えはあげてあると思うのですが CSVファイルからTXTファイルに変換できますか? http://www.fuku3.com/~habata/kbbs/kakov9/22313.htm 桐v2やv5のデータをExcelへ変換したい http://www.fuku3.com/~habata/kbbs/kakov5/17572.htm コマンドラインからフェイル名を指定してファイルを開く指定で、 テキストファイルウィザードを出してファイルを開くようにするには、 基本的には Excel はこのような機能は提供していないのでは無いでしょうか? 桐の話題と言うより Excel の機能&使い方の問題だと思いますが! こういった場合には Excel で何とかしてもらわないと外部からはどうしようも無いと思いますが、 そのために Excel には VBA があるのでそれを使う方法だと思います。 Excel 内部にマクロを組み込み、それを外部から利用する(呼び出す)のが通常だと思いますが、 同じ事を VBS から実現する方法を考えてみました。 csv_open2.vbs と言うファイル名で次のようなスクリプトを作ります。 --------------------------------------------------------------------------- Dim arg, xl, book, sheet, VBProject, VBComponent, CodeModule Set arg = WScript.Arguments If Arg.Count < 1 Then WScript.Quit End If Set xl = WScript.CreateObject("Excel.Application") xl.Visible = True xl.DisplayAlerts = True Set book = xl.WorkBooks.Add Set VBProject = book.VBProject Set VBComponent = VBProject.VBComponents.Add(1) Set CodeModule = VBComponent.CodeModule CodeModule.AddFromString("Sub Txt_Open(FileName)" & vbCRLF & "Application.Dialogs(xlDialogOpen).Show(FileName)" & vbCRLF & "End Sub" & vbCRLF) Set CodeModule = Nothing Set VBComponent = Nothing Set VBProject = Nothing xl.Run "Txt_Open",arg(0) book.Close False Set book = Nothing Set xl = Nothing WScript.Quit --------------------------------------------------------------------------- そして、wscript.exe x:\path\csv_open2.vbs "y:\path\filename.k3" と言うように、桐から csv_open2.vbs を通して filename.k3 を開きます。 csv_open2.vbs のやっていることは Txt_Open(FileName) と言うダイアログを開く サブプロシージャを book ファイルに登録し、 vbs から、その Excel のマクロを実行しています。 なお、この VBS を実行するには Excel の設定で、「ツール」の 「マクロ」-->「セキュリティ」の「信頼のおける発行元」タブの 「Visual Basic プロジェクトへのアクセスを信頼する」にチェック をつけておく必要があるかと思います。セキュリティの設定変更に 伴う「セキュリティ強度」の低下はご自分で判断して下さい。 なお、この VBS の実行確認は Excel2003 で行いました。 以上、ご参考まで | |||
26408 | Re:シェル実行でEXCELを操作したい | hidetake | 2004/05/21-09:14 |
記事番号26406へのコメント それから、桐9-2004 をお使いならば、この辺の型の問題も桐のものを そのまま移したければ、桐の Excel書き出し機能を使った方が良いのでは無いですか? また、K3 ファイルが自分で作ったものでなく、外からもらったものを 処理するのならば、いったん「桐」で読み込んで Excel 書き出しするとか・・・ | |||
26431 | ありがとうございました。 | katsuyoshi | 2004/05/22-01:28 |
記事番号26408へのコメント hidetakeさんありがとうございました。 >それから、桐9-2004 をお使いならば、この辺の型の問題も桐のものを >そのまま移したければ、桐の Excel書き出し機能を使った方が良いの >では無いですか? > V9-2004にはこんな良い機能が追加されていたんですね。 普段からあまりツールバーを使わないで作業しているもので 気がつきませんでした。(汗......) 桐に浸かってからはEXCELは表作成程度しか使わないためマクロの勉強はしていません。 ましてはVBAなど敷居が高くさっぱり解りません。 そんなことで同じ質問を再度してしまいました。 反省しています。 hidetakeさんにはお手数をおかけしました。 ありがとうございました。 | |||
26432 | ありがとうございました。 | katsuyoshi | 2004/05/22-01:36 |
記事番号26401へのコメント うにんさんありがとうございました > >K3ファイルをやめて、テキスト書き出しにてタブ区切りにするのが簡単です。 > シェル実行ではテキストファイルウィザードを動かすことはできないようです。 桐の問題ではなく、EXCEKの仕様のようです。 V9-2004にはEXCEL書き出しが追加されていたのを気がつきませんでした。 この方法で解決できました。 hidetakeさんにも指摘されましたが同じ質問を済度してしましました。 反省しています。 大変お世話になりました。ありがとうございました。 |