• ベストアンサー

VB6でファイルを開く

こんにちは。 いま作成中のプログラムなんですが、data.csvというファイルを作って、そのファイルに値をいれていきます。 現在、data.csvはexeファイルのあるフォルダに保存されるようになっています。 このデータを、プログラム中で呼び出して見たいのですが、どうすればよいでしょうか? 第一希望としては、計算処理中に呼び出してExcelに値が入っていくのを見たいです。 が、むりなら計算処理が終了した後でも可です。 よろしくお願いします。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

<data.csv> 1,2,3 11,22,33 111,222,333 <Book1.xls> A  B  C 1  11  111 2  22  222 3  33  333 と読み込んでエクセルシートに表示するには、 Option Explicit Private Sub CommandButton1_Click()   Dim I    As Integer   Dim J    As Integer   Dim N    As Integer   Dim M    As Integer   Dim Datas() As String   Dim Texts() As String      Datas() = FileReadArray("data.csv")   N = UBound(Datas()) + 1   For I = 1 To N     Texts() = Split(Datas(I - 1), ",")     M = UBound(Texts()) + 1     For J = 1 To M       Sheets(1).Cells(J, I) = Texts(J - 1)       MsgBox Texts(J - 1)     Next J   Next I End Sub プログラムコードを簡略化するためにCSVファイルを配列に読み込む FileReadArray()を利用しています。 Option Explicit Public Function FileReadArray(ByVal FileName As String) As String() On Error GoTo Err_FileReadArray    Dim fso    As FileSystemObject    Dim fil    As File    Dim txs    As TextStream    Dim strText  As String    Dim strTexts() As String       Set fso = New FileSystemObject    Set fil = fso.GetFile(FileName)    Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)    strText = txs.ReadAll    strTexts = Split(strText, Chr$(13) & Chr$(10)) Exit_FileReadArray:    FileReadArray = strTexts()    Exit Function Err_FileReadArray:    MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"    strTexts() = Split("")    Resume Exit_FileReadArray End Function

ZZR1200
質問者

お礼

遅くなって申し訳ありません。 >FileReadArray()・・・知りませんでした。 参考にさせていただきます。 ありがとうございました。

その他の回答 (2)

回答No.3

>ずばっというと、データの入っているExcelをプログラムから呼び出して立ち上げたいんです。 こういうことですか。 Private Sub Command1_Click() Dim File2 As String File2 = App.Path & "\data.csv" Open File2 For Output As #2 Print #2, "1,2,3" Print #2, "abc,def,hij" Close #2 Dim ExcelSheet As Object Set ExcelSheet = CreateObject("Excel.Sheet") ExcelSheet.Application.Quit Shell ExcelSheet.Application.Path & "\excel.exe " & File2, vbNormalFocus Set ExcelSheet = Nothing End Sub

ZZR1200
質問者

お礼

遅くなって申し訳ありません。 参考にさせていただきます。 ありがとうございました。

noname#24240
noname#24240
回答No.1

まず、開きたいファイルのパスは以下のとおりですよね。 app.Path & "\data.csv" csvファイルはカンマ区切りのデータなので、 1行ずつ読み込んで、split関数を使ってデータ取得できると思います。 申し訳ないのですが、私には具体的にどのような処理をしたいのかが いまいち判りませんでした…。 どこまで説明したらよいのかがわかりませんので ひとまず、これで少しはヒントになるでしょうか。

ZZR1200
質問者

お礼

お礼が大変遅くなって申し訳ありません。 ありがとうございました。

ZZR1200
質問者

補足

説明がいたらず、申し訳ありません。 ずばっというと、データの入っているExcelをプログラムから呼び出して立ち上げたいんです。 またアドバイスがありましたらよろしくお願いします。

関連するQ&A

  • VB6.0同一プログラム上で複数のExcelファイルの編集をしたいのですが…

    目にとめていただき有難うございます。 VBについては初心者です。宜しくお願い致します。 VB6.0で、フォーム上で指定した2つのExcelファイルについて、それぞれ特定の行・列を削除してCSVとして保存、そのデータを使って処理を行うプログラムを作成しようとしています。 同じVB6.0のプログラム上で、複数のExcelファイルに対して編集をかけることは可能でしょうか。 プログラムの流れとしては (1)エクセルオブジェクトの新しいインスタンスを作成 (2)エクセルファイル1を開き、特定行を削除する (3)エクセルファイル1をCSVとして保存、閉じる (4)オブジェクトを解放する (5)エクセルオブジェクトの新しいインスタンスを作成 (6)エクセルファイル2を開き、特定行を削除する (7)エクセルファイル2をCSVとして保存する (8)オブジェクトを解放する というものです。 (1)~(4)と(5)~(8)は同じSubプロシージャでファイルのパスだけ変えるようにしています。 (1)~(5)迄は素直に行くのですが、(6)の削除行を指定する段階で ‘Rows’メソッドは失敗しました’_Global’オブジェクト と出てしまう状態です。 (1)~(4)は問題なく動き、ファイル1の編集もきちんと出来ているため、混乱しております。 同じコードでパスだけ変えてやろうという考えが無理な話なのか、コードの組み方が悪いのか… 質問で不明瞭点があれば説明させて頂きますのでご指摘下さい。 宜しくお願い致します。 #ソースまで出した方が良かったのでしょうか…

  • VB.NET ファイルをひとつにまとめる

    現在 プログラムで必要なファイル(画像やデータを書いてあるテキストファイル)を プログラムと同じフォルダに置いて、読み込むようにしています EXE以外のファイルは読み取るだけなので EXEファイルの中に埋め込むような形にしたいのですが どうすればできるでしょうか? よろしくお願いいたします 画像の場合はPictureBoxに貼っておく テキストで持てる情報は 変数に持っておく以外の方法でないでしょうか

  • Excelの範囲指定セルににcsvファイルのデータを貼り付け

    Excelファイルの任意のセルにCSVファイルのデータを貼り付けたいと思っています。 各ワークシートにCSVファイルのデータを読み込むマクロを書いて実行していたのですが、ファイルが増えてしまったのでもっと簡単に処理ができたら、と思い相談させていただきます。 Visual C# 2008の勉強を始めて間もないので初歩的な質問かと思いますが、宜しくお願い致します。 希望する処理の流れは 1.「Excelファイル選択」ボタンを押すと、指定のフォルダ内のxlsファイルをリストボックスに表示 2.Excelファイル選択 3.「CSVファイル選択」ボタンを押すと、指定のフォルダ内のcsvファイルをリストボックスに表示 4.Excelファイルに対応するCSVファイル選択 5.「データ読込」ボタンでテキストファイルのデータをExcelファイルの指定のセルに貼り付け 6.Excelファイルを保存して終了 1.と3.のリストボックスへのファイル表示はできているのですが、選択したExcelファイルにcsvファイルのデータの貼り付けの方法がわかりません… それぞれのファイルを変数に格納して、更にcsvファイルのデータを配列変数に流して、繰り返し処理で貼り付けていくのかな?と想像しているのですが… http://support.microsoft.com/kb/302096/ja 上記のページを参考にしたのですが、外部ファイルのデータを指定のセルに入力するにはどうしたらよいのかわかりませんでした。 ・Excelファイルの指定のセルはB12~H1011までの7列1000行です。 ・csvファイルは1000行に満たないこともあります。 ・入力するデータ型は整数と文字列です。 PC環境 Windows XP SP3 Excel 2007 Visual C# 2008 要領を得ない説明で申し訳ありませんが、どうぞ宜しくお願い致します。

  • 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から、エクセルでファイルを開くには・・・

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

  • EXCELのマクロをバッチファイルから起動させ、あるフォルダ内のCSVファイルをTXTファイルに変換。

    あるフォルダにdata.csvというファイルがあります。 一つ目の質問は、EXCELのマクロで「あるフォルダ内にある***.csvを開く」という動作はどのように記述されますか? 2つ目の質問はバッチファイルあるいはスクリプトファイルでEXCELのこのマクロを実行させることは可能ですか。どのように記述したらよいのでしょうか。 3つ目はセルA1~A10の値をx B1~B10の値をyとしてグラフを描かせるコマンドはありますか。

  • ExcelVBAでEXEファイルを動かしたい

    Excel VBAで下記のexeファイルを開き、操作をしたいのですが、やり方がわかりません。 http://www5b.biglobe.ne.jp/~t-kamada/CBuilder/pcdgraph.html 1)このプログラムを起動し 2)Dataというフォルダにある、inputというタイトルのcsvファイルを読み込ませる(このプログラムでいうところの、ファイルボタンをクリックし、inputファイルをクリックすることにあたります) 3)骨格曲線というチェックボックスにチェックをいれ、グラフ出力をクリック、プログラムを閉じる という流れをやりたいのですが、VBA上でexeプログラムのチェックボックスにチェックをいれ、ボタンを押すということをどうやるのかがわからず、困っています。

  • excelのマクロでファイル一覧取得,グラフ作成

    以下のような作業をするために,EXCELのマクロを組もうと考えています. 指定したフォルダ以下のCSVファイルを取得(サブフォルダも含む)  ↓ 見つけたCSVファイルをエクセルで開き,値が含まれている範囲を選択してグラフを作成  ↓ "*.xls"として保存 エクセルのマクロは初めてなので,どうコーディングすればいいか全くわからず困っています. どなたかご教示くだされば幸いです. よろしくお願いいたします.

  • エクセルマクロについて

    いつもお世話になっております。 エクセルのマクロについて質問させていただきます。 仕事上測定した10回データを、エクセルで計算させ平均やσ出すという処理を毎回しているのですが、測定したデータというのが、csvファイルで10個できあがり、それを一つずつ開いては貼っての繰り返しをしています。 この作業をマクロで自動的に出来ないものかと思い質問させていただきました。 装置によって毎回.csvの前のファイル名が変る恐れがあるので、csvファイルの入っているフォルダ(ディレクトリを指定)を指定し、その中にあるcsvファイルを自動的に貼る事が出来る事が理想です。 VBAではこのような処理のサンプルプログラムがあるのですが、VBAはあまり解らないので出来ればマクロの記録からできればと思います。 宜しくお願い致します。

  • あるフォルダ内のすべての.CSVファイルをコピーして貼り付けるようなプログラム

    たとえばあるフォルダ内にある.CSVのファイルの中身のデータを 新しく一つのエクセルファイルを開き、sheet1にフォルダ内にある全ての.CSVファイルをコピーして貼り付ける様なことは可能ですか? たとえばsheet1に一つ目の.CSVファイのコピーが終わると、 その続きから二番目の.CSVファイルをコピー、 次は三番目の.CSVファイルをコピー貼り付け みたいにしたいのです。 データは 一列目が時刻データで二列目が五桁の数字です。 このサイト見ればいいよ!とかこういう感じのプログラムでできますよ! というのがあればご教授お願いします。