過去の桐井戸端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さんにも指摘されましたが同じ質問を済度してしましました。
反省しています。
大変お世話になりました。ありがとうございました。

戻る