vb.net 401号室:Excelをコントロール

スポンサーリンク
Kappo
Kappo

仕事でExcelって沢山つかいますよね(データ表現・集計など)
この部屋では、ベースのExcelを使って
・ベースExcelファイルを名前を変えてコピー
・コピーExcelを開く
・開いたExcelのセルに値を入れる
・開いたExcelのセルから値を取得する
・保存->閉じる
を案内しています
Kappoは、変数の宣言や接続記述・後片付け記述などはほとんどおまじない的(固定コーディング)に使いまわしていて便利ですよ!!
ぜひ利用してみてください!
また、一番したの方にコメント欄があるからよかったら質問・感想などメッセージ入れてください

NeGetパッケージマネージャーでインストールします

■ソルーション エクスプローラの参照を選択して、マウス右クリックしてメニューを出して
 「NuGetパッケージの管理」を選択ークリックしてパッケージマネージャーを起動します

■参照タブを選択して、検索入力に「Microsoft Office interop」と入力し検索表示します


■検索表示された一覧の中から、「Microsoft.Office.Interop.Excel」を選択して「インストール」
 します


■プロジェクトのプロパティ-参照タブを見ると「Microsoft.Office.Interop.Excel」が追加されました

Kappo
Kappo

これでvb.netでExcelがコントロール可能になりました!!www

フォーム(名前:ExcelForm.vb)を追加して
・テキストボックス×2・・・元Excelファイルのパス、コピー先Excelファイルのパス
・ボタン×1
・ラベル×2・・・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の情報が表示されました

Amazon | 本, ファッション, 家電から食品まで | アマゾン
Amazon.co.jp 公式サイト。アマゾンで本, 日用品, ファッション, 食品, ベビー用品, カー用品ほか一億種の商品をいつでもお安く。通常配送無料(一部を除く)

  

VBAの部屋
スポンサーリンク
シェアする
Kappoをフォローする

コメント

タイトルとURLをコピーしました