• ベストアンサー

VBからテキストファイル(タブ区切り)をエクセルで開く方法

VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 質問の主旨は、もともと、参照ボタンを押下すると、選択されている指定のテキストファイルを保存するダイアログが出力される仕組みであったものを、どうせ開くのはエクセルだからと言うユーザーの要望から、参照ボタンクリックと同時にエクセルが起動し指定のテキストファイルをエクセルで開いて見ることができるように改造するといったものです。(参照のみですので読み取り専用で見たい) テキストファイルをドラッグしてエクセルシートに持っていけばタブを認識して格セルに分割して開いてくれるのですが、VBから同じような動作をさせることは可能なのでしょうか? よいヒントになるような情報でもかまいません うまく説明できずわかりにくいかも知れませんがご助言をお願いいたします。 【環境】 WindowsXP、VB6.0、EXCEL2002

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

SendKeyを使うより直接EXCELオブジェクトを操作するほうがいいです。 こんな感じでしょうでしょうか。 VBの参照設定でEXCELオオブジェクトライブラリを ロードしてやることを忘れずに。 Sub a() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'オブジェクトのロード Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Open("D:\tab.csv", , True) Set xlSheet = xlBook.Worksheets(1) 'A列をタブ区切 xlSheet.Columns("A:A").TextToColumns , Tab:=True xlSheet.Cells(1, 1).Select '当該EXCELを画面に表示 xlApp.Visible = True 'オブジェクトの破棄 Set xlBook = Nothing Set xlApp = Nothing End Sub

kodawariha
質問者

お礼

ご回答ありがとうございます。 上記コードで問題なく動作確認できました。 で、ちょっと疑問に思ったのは 'A列をタブ区切 xlSheet.Columns("A:A").TextToColumns , Tab:=True xlSheet.Cells(1, 1).Select の部分はNo.3でご回答いただいた部分と違う部分で無くても動作したのですが、省略可能と解釈して問題ないのでしょうか・・。 もう少し調査してみます。

その他の回答 (5)

回答No.6

#4です。 >'A列をタブ区切 >xlSheet.Columns("A:A").TextToColumns , Tab:=True >xlSheet.Cells(1, 1).Select >の部分はNo.3でご回答いただいた部分と違う部分で無くても動作したのですが、省略可能と解釈して問題ないのでしょうか・・。 上記の部分ですが、TAB区切りで開きたいとの事でしたので、 明示的にTAB区切りを指定しています。 自動でTAB区切りになるかどうかは各PCの設定によりますので。 ちなみに私のPCではなりませんでした。(Excel2000) 2行目でA1をセレクトしているのは、TAB区切りした後で A1列の表示(上部に表示されるセルの値の部分)を再表示させています。 …これも私のPCではなぜかTAB区切り前の表示になっていたので 気持ち悪かったから付け加えただけです。

kodawariha
質問者

お礼

なるほど!そういうことでしたか!。 使う人の環境がまちまちなのはわかってることですので、この2行は絶対必要ですね^^; ご回答本当にありがとうございました。

回答No.5

VB 6.0 から Excel を Com オブジェクトで操作すれば問題ないかと。 Excel への参照設定を行ったうえで Dim xlApp As Excel.Application Dim xlBooks As Excel.Workbooks Dim xlBook As Excel Workbook Set xlApp = New Excel.Application Set xlBooks = xlApp.Workbooks Set xlBook = xlBooks.Open("c:\hoge.txt") xlApp.Visible = True Set xlBook = Nothing Set xlBooks = Nothing Set xlApp = Nothing または、Excel のバージョン変化に何とか対応するには Dim xlApp As Object Dim xlBooks As Object Dim xlBook As Object Set xlApp = CreateObject("Excel.Application") Set xlBooks = xlApp.Workbooks Set xlBook = xlBooks.Open("c:\hoge.txt") xlApp.Visible = True Set xlBook = Nothing Set xlBooks = Nothing Set xlApp = Nothing てな感じで。 > VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 ズバリなサンプルを探してしまうのは最初は仕方のない事なのですが、そこから前進するためには、 かつて得たズバリな知識、または今回も Web で調べまくった数々のサンプル。これらを小さな点に例えます。 kodawariha さんの中にはこれら小さな点がいくつもあるはずですので、次はこの小さな点たちの間に空いている空間を埋める努力をし、大きな円になるようにします。(なんのこっちゃって思います?) 空いている空間を埋めるのは「ひらめき」もあるのですが、「すでにある知識の中に出てくる要素から探っていく」という方法が大事です。 今回の目的には合致しなかった無数のサンプルをとりあえず入力してみる。 オブジェクト ブラウザとかで、Excel を VB から扱う時にどんな命令などがあるのか見てみる。 そんな行動から目的の解決方法が見つかったり、今後使うかもしれない何かを先取りすることが可能になります。

kodawariha
質問者

お礼

ご回答ありがとうございます。 おっしゃるとおりですね。私はお察しのとおり最近巷で流行のコピペ職人?とも言われる(言われてない?)駆け出し技術者です。。。情けないですが・・・。恥ずかしながら、点を円にする努力はそれなりにしてきたつもりです、しかしながら、その手段や方法が悪いのか、自力でこれらの事を探って解決した経験はほとんどありません。temtecomai2のおっしゃるオブジェクトブラウザも何の為にあるものかも知らないしまつです。どうせわからないからと自分で考えなくなる悪循環スパイラルですね・・・いけないこととは思いつつついついネットに頼ってしまいます。 こういう職人が蔓延る悪い時代ですね・・・。

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.3

じゃんぬねっと です。 > CSVデータを出力する方法や、テキストファイルを読み込む方法等 > の情報はたくさんあるのですが、 > 直接エクセルを起動し、それにテキストファイルを出力するのは > なかなか見当たらない状況です。 そうでしょうか? CSV でも TSV でも、'形式さえ正しければ' Excel から開くことはできますので、同じように可能だと思います。 たとえば、以下のような方法があります。 まず、プロジェクトの参照設定に 'Microsoft Excel xx.x Object Library' を追加します。 (Excel 2002 であれば、'Microsoft Excel 10.0 Object Library' のハズ) 次に以下のようなテストソースを書きます。 Dim xlApplication As Excel.Application Set xlApplication = New Excel.Application Dim xlWorkbooks As Excel.Workbooks Set xlWorkbooks = xlApplication.Workbooks Call xlWorkbooks.Open("C:\Hoge.txt") Set xlWorkbooks = Nothing xlApplication.Visible = True Set xlApplication = Nothing 動作確認済みです。

kodawariha
質問者

お礼

ご回答ありがとうございます。 上記コードで実行できました。 ありがとうございました。

noname#25230
noname#25230
回答No.2

手元に開発環境が無く、最近はVB.NET 2003ばかりつかっているので正確ではないかもしれませんが、Excel自体が、オブジェクトとして単独で存在し得るのではないでしょうか? 現在の仕事で、VB.NETから「Wordオブジェクト」を生成し、Wordを起動、指定されたWordファイルを開いて内部を編集、保存して印刷して、なんてのを一通りやってます。実は、VB.NETだといろいろと面倒がありまして、本来はVB6.0などでやるための手順を応用してやっていますので、VB6.0からも同様のことができるはずです。 内容は.NET向けですが、マイクロソフトにもいくつか文献はあります。 http://msdn2.microsoft.com/ja-JP/library/y1xatbkd.aspx などです。また、「VB Wordオブジェクト」などで検索してもいくつか文献が引っかかります。VBから見れば、WordもExcelもオブジェクトという面では基本性能は同じですので、同様に検索できるでしょう。 http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/6/vbacc/vbacc.html なども参考になるかと。 いろいろ調べて試してみてください。基本的に、ExcelのVBA(マクロ)でできることは、おそらくVB6.0からもできると思います。

kodawariha
質問者

お礼

ご回答感謝します。 ありがとうございました。 参考にさせていただきます。

  • cla_kk
  • ベストアンサー率33% (12/36)
回答No.1

他プログラムを起動させる・・・shell関数 他プログラムをアクティブにする・・・AppActivateステートメント 他プログラムをリモート操作・・・・・sendKeysステートメント 私がVB5でこれらのものを使用したことがあります。 VB6にあるかどうかわかりませんが、これで事が足りるのであれば、 似たようなものはあるのではないでしょうか。

kodawariha
質問者

お礼

ご回答ありがとうございます。 起動したエクセルをリモート操作まではする必要なさそうですが これらをキーワードに調べさせていただきます。

関連するQ&A

  • テキストファイル印刷 .net VB2005

    .net VB2005初心者です。 テキストファイルを、画面上、テキストボックスに出力するとこが出来ました。 そこで、そのテキストボックスの内容を、ボタンを押下しただけで、紙に印刷する方法を教えてください。

  • エクセルのデータをTAB区切りテキストに出力

    エクセルのデータをTAB区切りテキストに出力 1.エクセルのデータをTAB区切りテキストに出力して 2.そのテキストを入力としてrubyでデータ加工 という作業があります。現在1を手動で行っておりますが、ファイルが多いためこの操作をファイル名とシート名を指定してrubyから操作できればと考えております。 できれば追加でライブラリをインストールすることなく実現できればありがたいのですが、簡単な方法がございましたらご教示ください。 環境は、Win XP、Office 2003、ruby 1.9.1です。 最終的にはエクセルファイルから直接データを取得できるようにしたいのですが、当面は上記の方法で凌ぎたいと考えております。

    • ベストアンサー
    • Ruby
  • Excelでタブ区切りのテキストファイルを開くには?

    超初心者質問ですみませんm(_ _)m。 表題の通りです。タブ、あるいはコンマなどで区切られたテキストファイルをエクセルできれいに開く方法をおしえてください。 どうぞよろしくお願いいたします。 ちなみにエクセルは2003です。

  • VB6.0でTextファイルをExcel出力

    お世話になります。 VB6.0でTextファイル(カンマ区切りのデータが入っているもの)をExcelに出力するものを作成しました。 基本的に読込んだファイルをArrayで型を指定してExcelに出力する形です。 ですが、印刷するときにA4横に収まらない長さになってしまったので、 Textファイルの1行のデータをExcelには2行にして出力させることは可能ですか? Textファイルのデータはこんなのです。 XXXX,SS,SS,AA,DD,WW,Fed,fk,aaa,aqee このような形で数百件入っています。 何か参考になりそうなものがあったら教えてください。 よろしくお願いします。

  • VB でのタブ区切り文字の扱いについて

    EXCELのデータからテキストファイルへの貼り付けで作成した、タブ区切り文字を含むデータをVBで扱う方法が分かりません。 http://park5.wakwak.com/~weblab/selectTextFile-TSV.html 上記のURL先のソースで試してみたのですが、 「‘System.InvalidOperationException’の初回例外がSystem.Data.dll で発生しました。」といったエラーが発生します。 SQLでDBからデータを取り出すようにファイルから値を取得し、かつ指定の列でソートを行いたいのですが、どうプログラミングしたら良いか教えていただけないでしょうか。 参考になる情報でもかまいませんので宜しくお願いします。

  • VBからExcelに書き込む方法

    こんにちは。VB6.0(SP5),Excel2000,Win2000でVBの勉強をしています。 VBでコマンドボタンを押した時に、テキストボックスのデータを、Excelに書き込みたいと思っています。 特定のExcelに書き込むことは「GetObject」で出来たのですが、名前がわからない場合はどうしたらよいのでしょうか? ※ExcelはVBから起動したものではなく、人が任意のファイルを起動しています。Excelの名前はわかっていません(任意なので、何かわかりません) このような場合に、VBから書き込むのは可能なのでしょうか? よろしくお願いします。

  • vb2008 テキストファイルを開くには?

    vb2008 テキストファイルを開くには? VB2008を使用している者です。今回もアドバイス宜しくお願い致します。 あるテキストファイルをOPENしたいと思っているのですが、やり方がわかりません。 VB2008でファイルを開く方法として一般的なのがOpenFileDialogを使用した方法ですが、 これだといちいち開きたいファイルを指定しなければなりません。その都度ファイルを 指定するのではなく、開きたいファイルをピンポイントで開きたいのです。 いろいろ検索しましたが、全くヒットしませんでした。 皆様のご指導、宜しくお願い致します。

  • スペース区切りのテキストファイルをExcelで開く

    テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか

  • テキストファイルクリア .net2005 VB

    VB初心者です。よろしくお願いたします。 現在 .net2005 VBでPL/SQLの処理結果を「log.txt」に出力しておりますが、処理をするたびに、テキストファイルの下へどんどん追加されます。 そこで、画面上からログクリアボタンを押下すると、「log.txt」の中身が初期化されるようにしたいと考えて降ります。 どうすればよいか、サンプルのロジックを教えて頂けませんでしょうか?

  • EXCELのマクロを使って、テキストファイル(タブ区切り)の行列の一部

    EXCELのマクロを使って、テキストファイル(タブ区切り)の行列の一部分をコピーし、それを別の一つのシートに貼り付けていくことはできますでしょうか? (複数のテキストファイルの行列を一つのシートにまとめたい、ということです) 現在やり方がわからないので、手動でEXCELを使って全てのファイルを開き、コピー、貼り付けをしています。 インポート元のファイル名はいつも異なるため、自動記録ではうまくいかなそうです。 複数のインポートファイル名を選択し、ボタン一つでコピー、ペーストが終了するのが理想的です。 よろしくお願いいたします。