<VB.NETの学習シリーズは固定ページで記録していきます>
Visual Basic .NET から Excel を自動化して、配列を使用して範囲内のデータを入力または取得する方法
⓪VisualStudio Community 2019 -16.7.0をインストールします。
選択したコンポーネントは3個だけです
.NETデスクトップ開発
C++によるデスクトップ開発
ユニバーサルWindowsプラットフォーム開発
①VB.NETのWindowsフォームアプリ新規プロジェクトを作ります。
真っ白なForm1.vbが生成されますので、ここにツールボックスを使ってオブジェクトを加えます。
ボタン1、ボタン2、チェックボックス1をドラッグドロップで作成
チェックボックス1のPropertyを開いて、(Name)に FillWithStrings
と書き込む
②EXCELと接続するためのオブジェクトライブラリーを参照に追加します
メニューの プロジェクト=>参照の追加 をクリック
COM指定で、ライブラリーのリストがでるので、
Microsoft Excel 12.0 Object Library をチェックする
※EXCEL2007用です。
※インストールされているExcelに合わせたライブラリーがでます
③MSドキュメントのページからソースをForm1.vb(コード)に
コピペする。
Visual Basic .NET から Excel を自動化して、配列を使用して範囲内のデータを入力または取得する方法
https://docs.microsoft.com/ja-jp/previous-versi
ここからダウンロードしてコンパイルが通ったソースをGISTにアップしてあります。
https://gist.github.com/dj1711572002/2731de4e0426247d1a7377f2c61d123a
Imports Microsoft.Office.Interop Public Class Form1’Keep the application object and the workbook object global, so you can ‘retrieve the data in Button2_Click that was set in Button1_Click. Dim objApp As Excel.Application Dim objBook As Excel._WorkbookPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objBooks As Excel.Workbooks Dim objSheets As Excel.Sheets Dim objSheet As Excel._Worksheet Dim range As Excel.Range’ Create a new instance of Excel and start a new workbook. objApp = New Excel.Application() objBooks = objApp.Workbooks objBook = objBooks.Add objSheets = objBook.Worksheets objSheet = objSheets(1)’Get the range where the starting cell has the address ‘m_sStartingCell and its dimensions are m_iNumRows x m_iNumCols. range = objSheet.Range(“A1”, Reflection.Missing.Value) range = range.Resize(5, 5)If (Me.FillWithStrings.Checked = False) Then ‘Create an array. Dim saRet(5, 5) As Double ‘Fill the array. ‘Put a counter in the cell. ‘Set the range value to the array. Else ‘Fill the array. ‘Put the row and column address in the cell. ‘Set the range value to the array. ‘Return control of Excel to the user. ‘Clean up a little. Private Sub Button2_Click(ByVal sender As System.Object, ‘Get a reference to the first sheet of the workbook. ExcelNotRunning: ‘We cannot automate Excel if we cannot find the data we created, ‘Get a range of data. ‘Retrieve the data from the range. ‘Determine the dimensions of the array. ‘Build a string that contains the data of the array. Dim rowCounter As Long ‘Write the next value into the string. Next colCounter ‘Write in a new line. ‘Report the value of the array. ‘Clean up a little. End Class |
④ 開始を押してコンパイルビルドする
●関連学習でEXCELイベントを取得する記事もあります。動画で操作記録してあります。