• ベストアンサー

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。

Excelのファイル{(75行*1列の1セット)*33セット分}データをVBで扱う方法を教えてください。 ExcelのデータをVBに読み込んで、それを並び替えするプログラムを作ろうとしています。 なのですが、ExcelのデータをVBに読み込む方法がわかりません。 ネットで調べたらopen,close,get・・とあるのですが、いまいちわかりません。 どなたか教えてください。

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

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

Open/Close では実質的に言って無理です。 ( Excel のファイル構造がわかればできるかもしれませんが・・・) VB6 と VB.NET では少し記述方法が違いますが、VB.NET だと Dim eb As Object Dim es As Object Dim strFileName As String strFileName = "C:\Temp\Book1.xls" eb = GetObject(strFileName) es = eb.Sheets(1) MessageBox.Show(es.Cells(2, 1).value, "Test", MessageBoxButtons.OK, MessageBoxIcon.Information) eb = Nothing のような感じで Excel のような感じで内容を読むことができます。 (上の例では 1番目のシートの A列 2行目のセルの内容をメッセージボックスに表示します。) 並び替えですが、Excel 上で並び替えをすることも可能ですが、 読み込んでから並び替えをするなら、 VB6の場合:並び替え関数を自作(並び替えのアルゴリズムはクイックソートやヒープソートなどいろいろありますので、検索して調べてみてください。どこかに VB のサンプルがあるかも。) VB.NETの場合:Array.Sort が使用可能です。

shishsi
質問者

お礼

並び替えのことまで教えていただきありがとうございます。 効率よくプログラミングできそうです。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

<Book1.xls> 4444 2222 6666 1111 5555 3333 [イミディエイト] 4444 2222 5555 3333 6666 1111 2行を1ユニットとして並び替えて Debug.Print するサンプルコードは以下の通りです。 Private Sub Command1_Click()   Dim I      As Integer   Dim J      As Integer   Dim K      As Integer   Dim strTexts(2) As String      Set xlApp = CreateObject("Excel.Application")   Set xlBook = xlApp.workbooks.Open("C:\TEMP\Book1.xls")   For I = 0 To 2     For J = 0 To 1       K = K + 1       strTexts(I) = strTexts(I) & xlBook.sheets(1).cells(K, 1) & ";"     Next J   Next I   QSort strTexts(), 0, 2   Debug.Print CutStr(strTexts(0), ";", 1)   Debug.Print CutStr(strTexts(0), ";", 2)   Debug.Print CutStr(strTexts(1), ";", 1)   Debug.Print CutStr(strTexts(1), ";", 2)   Debug.Print CutStr(strTexts(2), ";", 1)   Debug.Print CutStr(strTexts(2), ";", 2)   xlBook.Close   Set xlBook = Nothing End Sub VB6.0 と VB.NET でコードの書き方は違うようで違うような。

shishsi
質問者

お礼

朝早くからありがとうございます。 例題のようなものまで作っていただいて、非常にわかりやすかったです。ありがとうございました。

関連するQ&A

  • 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()

  • VB5でCSVデータをAccess97のDBへセット

    普段はVB.NETの開発をすこししているのですが VB5のプログラムの修正の依頼が来て困っています。 CSVのデータをVB5でAccess97のDBへデータセットしたいのですが VB.Netでは同様のプログラムを作成した事があるのですが VB5は全然仕様が違うので困っています。 VB5でCSVを読み込んで配列にセットするにはどのように したらいいのでしょか?CSVを行で読み込むところは なんとか調べてわかりましたが、VB5ではSplitや配列が使えそうに ないのでどのようにしたらいいのかわかりません。 よろしくお願いします。 現在のソース Dim strTextLine As String Dim strTxtDat As String intFileNo = FreeFile Open "c:\infile.csv" For Input As #intFileNo Do While Not EOF(intFileNo) Line Input #intFileNo, strTextLine Loop Close #intFileNo

  • VBでExcelファイルをテキストファイルにコンバートしたい

    あるソフトからExcelファイルが出力されます。これを編集してテキストファイルにしたいと思います。大体できたのですが、まだ不具合があるのでお教えください。 Excelは、以下のコードで呼び出しています。   Set EX = CreateObject("Excel.Application")   With EX.Application     .Workbooks.Open (Pathname)     .Visible = False     .DisplayAlerts = False       エクセルのデータをファイルに出力するコード     .Workbooks.Close   End With   Set EX = Nothing (1)Excelのデータの範囲を知りたいのですが、以下のコードで検索すると結構時間がかかります。簡単に範囲を得る方法はないでしょうか?行と列と両方知りたいのですが。   lastcell = .Cells(Rows.Count, 1).End(xlUp).Address    または   lastRow = .Range("A65536").End(xlUp).Row (2)VBで作っているのですが、VBAで作るより時間がかかります。これは仕方ないでしょうか? 以上、よろしくお願いいたします。

  • エクセルのデータをVB2008でグラフ化する方法

    はじめまして。VB初心者です。 エクセルからデータを取り出し、VB2008のMSChartコントロールを使って、マーカー無しの平滑線の散布図を作ろうと思っています。まだVB初心者で、プログラム作るのに苦労しています(汗)。エクセルから下記のようにランダムにデータを取り出して表示する方法わかる方いましたらご教示お願いします。(サンプルコードありましたら助かります!!) ★VB2008のMSChartコントロールで下記のように表示したいです!! (1)エクセルにあるデータは、A1からデータがはじまっているのではなく、AFの3からはじまり、3,6,9,12(行)に系列ごとにデータが入力されます(下記のエクセルデータ例参考)。 (2)VBでの表示は↓ののようにしたいです!!X軸はエクセルデータの列となり、値は1からはじまりエンドは任意となります。Y軸は測定データで、12.3. 13.5等となり、エクセルのAFから入力した数値となります。系列はエクセルの行となり、表示は系列をすべて重ねて表示します。 【例】      1    2   3   4 ・・・(X軸) 系列1 12.3  13.5  13.4  20.3・・・(Y軸) 系列2 13.3  12.5  11.4  22.3・・・(Y軸) ・ ・ 【エクセルデータ】    AF   AG    AH    AI ・・・(列) 3 12.3  13.5  13.4  20.3・・・・・→系列1 6 13.3  12.5  11.4  22.3・・・・・→系列2 9 11.3  13.5  13.4  20.3・・・・・→系列3 12 15.3  13.5 13.4  20.3・・・・・→系列4 (行) 以上、宜しく御願致します。

  • VB6でEXCELをクローズ出来ない

    VB6でEXCELを使用した後クローズ処理をしたつもりですが、VBと別にEXCELを起動しVBで使ったEXCELを読み込もうとすると、「編集のためロックされています」とメッセージが出て、読み取り専用でしかオープン出来ません。また、VBでEXCELを繰り返しオープンするとメモリがいっぱいになってしまいます。 VBでのEXCELオープンは Dim fnm As String Dim exl As Object fnm = "EXCEL File名" 'フルパスで指定 Set exl = CreateObject("Excel.Application") exl.Application.Workbooks.Open FileName:=fnm クローズは Set exl = CreateObject("Excel.Application") exl.Application.Quit Set Sheet = Nothing Set BooK = Nothing Set ExcelApp = Nothing 以上です。なお、VBの参考書は入門書だけ持っていますが、このようなことは書いてありません。従って上のコードも意味もわからず、ネットから拾ってきたまま使用しています。参考書または、Webサイトを紹介して頂ければ有り難いです。

  • VB.NET データセットのEXCELへ出力

    当方VBに触れて日が浅く参考文献等をみながらDBからテーブルをデータセットに格納するところまでは出来たのですが、 データセットに格納したテーブルをEXCELへ出力する方法をご教示願えないでしょうか また、その際にデータセット内の特定の列データ全体へ日本語の文字を付加してからEXCELへ出力したいのと思っております。 上記2点どなたか教示願えないでしょうか 宜しくお願いいたします DETASET内項目 物件名: *ここに現在の情報と付加文字を入れ出力したく思います 規格: 規格コード: 環境 WINDOWS XP PRO VB.NET 2003 OFFICE2003 PRO 使用するユーザー環境 WINDOWS98 OFFICE97 PRO

  • VB.NETで既存Excelファイルの特定列を変更したい

    はじめまして。 初心者的な質問かもしれませんが、何卒ご教示下さい。 VB.NETでExcelファイルをオープンし、複数行を順読みして特定の条件でExcel追加列に項目を埋めたいと思っております。いろいろサイトを探しましたが、なやんでおります。ずうずうしいのですがサンプル的なものからご教示いただけましたら幸いです。どうぞよろしくお願いいたします。

  • CSVファイルの行と列のセルってどうやって指定するのですか?

    たとえば、1行目の2列目のセルの値を消したい。 2行目の5列目のセルの値に数字の5をいれたい。 って場合、行だったら $FILE=data.csv; open(IN, $FILE); @data=<IN>; close(IN); このときの $data[2]は3行目ですよね? では3行目の3列目はどうやって指定するのでしょうか?たとえば3行目の3列目のセルの数字の5だったのをperlを実行したらセルの中を6に書き換えるのはどうしたらいいのでしょうか?

    • ベストアンサー
    • Perl
  • エクセル2003で、行に入れたデータと列に入れたデータを一度に入れ替え

    エクセル2003で、行に入れたデータと列に入れたデータを一度に入れ替える方法(行と列の入れ替え)を教えて下さい。2007の場合も同じでしょうか。違うようでしたらそれぞれについて教えて下さい。

  • VB エクセルデータ取り込みについて

    VBにエクセル(CVS)データを取り込みたいのですがコード等分かりません。 20行、100列位のデータをVBに取り込み作図したいのですが、取り込み方が分かりません、どうか宜しくお願いします。

専門家に質問してみよう