ここから本文です

VisualBasicで作成した行列データーを自動的にエクセルで記録するプログラムを組み...

ein********さん

2010/10/2923:26:16

VisualBasicで作成した行列データーを自動的にエクセルで記録するプログラムを組みたいのですが可能ですか?
可能ならば、教えて頂けませんか?

例えば、変数名をYahooとして

Yahoo(10)
としたとき
Yahoo(1) ~ Yahoo(9)のデーター(整数)を自動的にエクセルで反映させたいです。

キーワード:プログラミング エクセル Excel Visual Basic Windows IT

補足hotosysさん 非常に丁寧な回答ありがとございます。
Excel ファイルはどうやって指定すればよいにか教えていただけませんか?

閲覧数:
242
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

編集あり2010/10/3108:51:09

最初の回答が他の人の質問への回答でした、すみません。

ちなみに質問のVisual BasicがVB.net系(2002以降)なら、あまり自信は無いのですが、こんな感じではどうでしょうか?
最初に参照の追加でMicrosoft Excel **.* Object Library を追加しておいて下さい。
プログラムの先頭に
Imports Microsoft.Office.Interop
を加えておいてください。


Sub sample()
Dim xlFile As String = "c:\test.xls" '対象のExcelブック
Dim Yahoo() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} 'データ(配列は0が下限なのでYahoo(0-11)の範囲だとします)

'データをB1からB10までに反映させて閉じる
Dim xls As New Excel.Application
xls.Visible = True
Dim xlBooks As Excel.Workbooks = xls.Workbooks
Dim xlBook As Excel.Workbook = xlBooks.Open(xlFile)
Dim xlSheets As Excel.Sheets = xlBook.Worksheets
Dim xlSheet As Excel.Worksheet = DirectCast(xlSheets.Item(1), Excel.Worksheet)
Dim xlCells As Excel.Range = xlSheet.Cells
For i = 1 To 10
Dim xlRange As Excel.Range = DirectCast(xlCells(i, 2), Excel.Range)
xlRange.Value = Yahoo(i)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlRange)
Next
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlCells)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheets)
xlBook.Close(True)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
xls.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xls)
End Sub

質問した人からのコメント

2010/11/4 19:48:57

降参 非常に親切にありがとうございます。

わざわざ、書き直して頂いて申し訳ないです。
試しに使ってみます!!

ベストアンサー以外の回答

1〜1件/1件中

por********さん

2010/10/3023:52:24

こんにちは。
質問を、
VBから、エクセルを制御する環境を作成し、ブックを開きます。
VBで、変数yahoo(10)の整数を作成し、それをエクセルのシートに貼り付けたい。
どのようにしたらのか?

だとします。
set wb1 = excelapp.workbooks.open(filename)
wb1.sheets(1).range("A1:A10").value = yahoo
とすると、yahoo(0)がA1セルに、yahoo(9)はA10セルに張り付きます。

配列の宣言を工夫したら、配列と同じサイズのエクセルレンジに対して、書き込みするように、したらいいです。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる