• 締切済み

VBからExcelファイルへの書き込み方法

VB2005およびExcel2003を使用して、5分おきに測定データをExcelファイルに書き込んでいます。現行1回1回Excelファイルを起動してデータを書き込みして閉じてを繰り返しており、Excelファイルを起動するだけでも時間がかかりパフォーマンスがおちています。 そこで初めにExcelを起動しておき、その間データを書き込み最終データを書き込んだ時点でExcelを閉じるということができるでしょうか?教えてください。

みんなの回答

  • 7_7_7
  • ベストアンサー率24% (115/469)
回答No.3

簡単に出来ますよ。 Excelファイルを起動してデータを書き込みして後、閉じなければいいだけです。 閉じる作業は最後に1回すれば良いだけの話です。

aioi_k
質問者

補足

回答ありがとうございます。もう少し詳細に教えていただきたいのですが、1回目OPENした後、2回目以降の書き込み方法を教えてください。 現在以下のように書いています。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "xxxx.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = CType(xlSheets.Item(1), Excel.Worksheet) Dim xlCells As Excel.Range Dim xlRange As Excel.Range xlCells = xlSheet.Cells xlRange = xlCells(3, 12) xlApp.DisplayAlerts = False xlSheet.SaveAs(xlFilePath) xlApp.DisplayAlerts = True 'xlSheet の解放 'xlSheets の解放 'xlBook を閉じる 'xlBook の解放 'xlBooks の解放 'Excelを閉じる 'xlApp を解放

回答No.2

私も #1 さんと同じ。 CSV なり、独自フォーマットのテキストファイルに書き出し、Excel で読み込むのは別のタイミングに別のトリガーで行うようにします。 これならば Excel 側で読み込み後に何か処理をさせたいのなら Excel VBA 側に実装できますし。 # 例えばグラフ化とか書式化して印刷とか。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

私だったら・・ CSVファイルに追記書き込みして終了後にExcelに読み込んで変換します。

aioi_k
質問者

お礼

回答ありがとうございました。 私も同様の考えなのですが、請負元の仕様でして・・・

関連するQ&A

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

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

  • VBによるEXCELの書き込み

    お世話になっております VB2010でのEXCEL書き込みで質問です 今、VB2010で、EXCELに書き込む処理を行っています EXCELの参照を追加はせず、Object型にEXCELをセットして、EXCEL参照がなくても使用できるようになっています 問題は、VB2010でEXCELでファイルを書き込み中にスタートメニュー等からEXCELを開き、そこから他のEXCELファイルを開くとVBで実行中のEXCELも開いてしまい、そのVB2010での実行中のEXCELを閉じるとVBの方でエラーが起きてしまいます VB2010で使用するEXCELを、スタートメニューから開いたEXCELが使用しないようにすむ方法はありますでしょうか

  • VB.NETでのEXCELファイルの閉じ方

    VB.NETのプログラミングで開いているEXCELファイルを終了させるため、Quitメソッドで終了させても、タスクマネージャーを見るとEXCELが起動したままになっています。画面からはEXCELは消えています。どうにかして完全に閉じたいので方法を教えてください

  • VB6からEXCELマクロの終了を判断する方法を教えてください。

    VB6からEXCELマクロの終了を判断する方法を教えてください。 VB6とEXCEL(VBAも含む)を使って次のような流れの処理を行うソフトを作っています。 そこでどうしてもEXCELマクロの終了をVB6から判断する必要があり、方法を教えて頂けないでしょうか。 1)VB6でEXCELファイルを起動 2)VB6からセルA1に10,A2に20を代入 3)VB6からEXCELファイル内のマクロをコール 4)マクロはA1+A2の計算を行いA3に代入(30) 5)VB6からA3の値を読み込む (実際にはマクロは複雑な処理をします。) 1)~5)の処理を5000回程度行います。 VB6から送られるデータは毎回変わり、EXCELとマクロで計算させたデータを回収してテキストファイルに書き出します。 一通りのプログラムは完成したのですが、計算したデータを見ると10+20が1.99999とか15.51414とかおかしい結果になっています。 もしかしたらマクロの実行が終わっていない段階でVB6がデータを拾ってしまっている??と考え、マクロの終了をVB6で判断してからデータを回収するようにしたいと思っています。 何か方法はないでしょうか。(または他に間違っているところがあるのでしょうか。) 長文ですみません。よろしくご教示ねがいます。

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

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

  • VBから、エクセルでファイルを開くには・・・

    またまた、お世話になりますm(__)m 環境はVB.net2003、エクセルは2002でプログラミングの勉強、データ処理をしているのですが、VBでエクセルを開き、そのエクセル上でファイル(csvやテキストなど)を開きたいのですが、VB上でどのように書けばよいのでしょうか? VBでエクセルをたちあげたり、bookやsheetを開くことはできました。 どなたかご教授お願いしますm(__)m

  • VB2005 で立ち上がった状態のEXCELファイルからデータ読込みだけしたいのですが

    どなた様かお助けください。VB2005を勉強中の素人です。 既に立ち上げた状態のEXCELファイルから単純に特定セルの数値をVBのラベルに読み取りたいだけなのですが、ネットや書籍にてVBでのEXCEL読込み方法について調べたのですが、どこの情報をみても、EXCELの立ち上げとクローズがセットになっており、既にEXCELファイルを開いた状態からでは2重起動となり、読み込みだけの仕方が分かりません。一応下記でファイルのオープンからのクローズまでができるようですが、[open]のところを取り除くとエラーになってしまいます。 ファイル名とセルだけが私の指定したい条件なのですが、なにか単純な読み取り方法はないでしょうか? というか私がアホすぎるのも原因だとは思いますが、ちょっとEXCEL情報読み込ませたかっただけなのにもう2日も悩んでおり、こんなに難しいとは思いませんでした。VBって初心者向けとかいわれていますけど6.0やら.netやらと情報が分散していて何するにも一苦労ですね。  いろいろ調べて下記のコードで最低限読み込みはできるようになりました。(短いコードが好きなので宣言とかはかなり除去しているからかな?時々表示されるセルデータもおかしくなります) EXCELオブジェクトライブラリの参照は済です。 ファイルのオープンとクローズを除去し最終的には立ち上げっぱなしのEXCELから単純な読込み(のみ)を1秒に1回程度繰り返してラベル表示を随時更新するのが目的です。ご助言お願いします。 Dim xlApp As New Excel.Application Dim xlFilePath As String = "C:\あつし\sample.xls" label1.Text = xlApp.Workbooks.Open(xlFilePath).Worksheets.Item(1).Range("A3").Value() xlApp.Quit()

  • VBでエクセルファイルの読み込み方について

    エクセルファイルに書いた抵抗のデータ(抵抗値、消費電力など)をVBを使って読み込み、それを使ってどの組み合わせがいいのかなどを検証するプログラムを作りたいのですが、エクセルファイルからのデータの読み込み方がよく分かりません。どなたか、サンプルプログラムを提供していただけないでしょうか?

  • VBでエクセルのデータを取り込む方法

    VB2010にエクセル(2003)のデータを取り込みたいのですが、うまくいきません。 どうすればよいのでしょうか。 外部アプリなので、Public Class Form1の前にImports Excel = Microsoft.Office.Interop.Excel と記入、dim xlapp as excel.apllcation dim xlbook as exce.book dim xlsheets as excel.sheets と記入してみますがこの時点でコードエラーとなります。(ネットで調べこのように記述しました) どうすればいいでしょうか。 すみません。vb初心者なので詳しく教えていただくとたすかります。 よろしくお願いします。

  • VB6.0でVB上にExcel

    VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?