仕事でExcelって沢山つかいますよね(データ表現・集計など)
この部屋では、ベースのExcelを使って
・ベースExcelファイルを名前を変えてコピー
・コピーExcelを開く
・開いたExcelのセルに値を入れる
・開いたExcelのセルから値を取得する
・保存->閉じる
を案内しています
Kappoは、変数の宣言や接続記述・後片付け記述などはほとんどおまじない的(固定コーディング)に使いまわしていて便利ですよ!!
ぜひ利用してみてください!
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください
Excelを使うために参照設定を追加
NeGetパッケージマネージャーでインストールします
■ソルーション エクスプローラの参照を選択して、マウス右クリックしてメニューを出して
「NuGetパッケージの管理」を選択ークリックしてパッケージマネージャーを起動します
■参照タブを選択して、検索入力に「Microsoft Office interop」と入力し検索表示します
■検索表示された一覧の中から、「Microsoft.Office.Interop.Excel」を選択して「インストール」
します
■プロジェクトのプロパティ-参照タブを見ると「Microsoft.Office.Interop.Excel」が追加されました
これでvb.netでExcelがコントロール可能になりました!!www
フォームの編集
フォーム(名前:ExcelForm.vb)を追加して
・テキストボックス×2・・・元Excelファイルのパス、コピー先Excelファイルのパス
・ボタン×1
・ラベル×2・・・Excelから取得した値を表示
ベースExcelファイルの準備(元ファイル)
セルーE5とE6に取得したい値を入力しておいてください
プログラム
Button1コントロールのプログラム
元Excelを別名でコピーして、セルに値の代入+セルから値を取得します
[手順]
・元Excelを別名でコピー
・コピーしたExcelを開く
・Excelのシートを指定
・Excelセルの値を取得
・Excelセルに値を代入
・Excelを保存ー>閉じる
・宣言の後片付け
▼プログラム▼
'------------------------------
'------------------------------
Dim ex As Microsoft.Office.Interop.Excel.Application 'Excelアプリケーション
Dim sh As Microsoft.Office.Interop.Excel.Worksheet 'Excelワークシート
Dim wb As Microsoft.Office.Interop.Excel.Workbook 'Excelワークブック
Dim books As Microsoft.Office.Interop.Excel.Workbooks
'------------------------------
Dim basePath As String = TextBox1.Text 'ベースExcel名
Dim copyPath As String = TextBox2.Text 'コピー先Excel名
'------------------------------
'Baseを別名でコピー
System.IO.File.Copy(basePath, copyPath, True)
'------------------------------
'Excel Open
ex = New Microsoft.Office.Interop.Excel.Application
books = ex.Workbooks
wb = books.Open(copyPath)
'------------------------------
sh = wb.Sheets("Sheet1") 'Sheet1を指定
'------------------------------
ex.Visible = True 'Excelを表示
'ex.Visible = False 'Excelを非表示
'------------------------------
'Sheet1に値を代入
sh.Range("B5").Value = "ABCDEFG"
sh.Range("B6").Value = 12345
'------------------------------
'Sheet1から値を取得
Label3.Text = sh.Range("E5").Value
Label4.Text = sh.Range("E6").Value
'------------------------------
'Excelファイルを上書き保存
'警告メッセージを表示しない
ex.DisplayAlerts = False
wb.Save()
'警告メッセージを表示する
ex.DisplayAlerts = True
'------------------------------
'Excelファイルを閉じる
wb.Close()
ex.Quit()
'------------------------------
'後片付け
System.Runtime.InteropServices.Marshal.ReleaseComObject(books)
System.Runtime.InteropServices.Marshal.ReleaseComObject(sh)
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb)
System.Runtime.InteropServices.Marshal.ReleaseComObject(ex)
books = Nothing
sh = Nothing
wb = Nothing
ex = Nothing
'--------------------------------------------------
'バックグランドのExcelを後片付け
Dim ps1 As System.Diagnostics.Process()
ps1 = System.Diagnostics.Process.GetProcessesByName("EXCEL")
Dim p1 As System.Diagnostics.Process
For Each p1 In ps1
If p1.MainWindowTitle = "" Then
p1.Kill()
End If
Next p1
'--------------------------------------------------
プログラムの実行
テキストボックスに各Excelファイルのパスを入力したら、「Button1」をクリックする
プログラムからExcelセルのB5・B6に値が代入されて、ラベルにExcelで取得したのE5・E6の情報が表示されました
コメント