Vol.832 12.Nov.2021

4K有機ELテレビ VB2019_EXCEL連携

E 4K有機ELテレビ

by fjk

 我が家の一部の部屋を改装したので、この機会に思い切って4K有機ELテレビを購入することにした。入手したテレビはXRJ-55A80J(ソニー、55インチ)で、「新しいXRチップを採用している」と店員に勧められ、値段もネットより安い金額を提示され、この機種に決めた(同店に気に入ったテレビ台があったのも理由の一つ)。このシリーズの特徴の一つは、有機パネル画面そのものがスピーカー(アコースティックサーフェースプラス)になっていて、画面から音が聞こえてくるので、反射や籠もる音がない、
 有機ELテレビは黒が綺麗で、4Kで見る夜景や夜空は素晴らしい。早速、別途購入したUSB-HDD(6T、4K録画対応、USB3.0準拠)に4K番組をそのままの画質で録画し、4K高品質画像で再生し満喫している。なお、録画用USB-HDDは事前に登録が必要である。やっと我が家も4K時代となった。
 録画用とは別に外付けUSBメモリ(HDD)も接続でき、jpg、mp4などの再生も可能である。なお、USBメモリを取り外すには、「設定/ストレージとリセット/リムーバブルストレージ」の「USBメモリ/取り外し」を選び「決定」、その後「・・安全委取り外しました」と表示後にメモリを取り外すこと。
 TVをネットに接続すると、NetflixやAmazonPrimeなどが視聴できるようになる。さらにGoogleアカウントでテレビにログインすると、アプリを追加することができ、Tverなども視聴できる。なお、USB端子にUSBキーボードを接続すると、文字入力にキーボードが使える。
 なお、4Kに対応していないBDレコーダをつなぐ場合、BDアンテナケーブルを分波器で分波し、テレビとレコーダそれぞれにアンテナケーブルを接続する必要がある。

函館の夜景(4k) ネットTV(ホーム画面)


V VisualBasic(6) 〜EXCEL連携

by fjk

 VisualBasicからExcelにアクセスするには、Excelなどが持っている「COM相互連用」機能を利用する。これはExcelファイルをMicrosoft.Office.Interop.Excelというインターフェース経由で外部から操作することでExcelファイルを読み書きを行う手法であり、Excelがインストールされている必要がある。
 VBでCOM相互連用を利用するには、「COMコンポーネント」への「参照」をプロジェクトに追加する必要がある。ソリューションエクスプローラで「参照」を右クリックし、「参照の追加」「COM」を選び、「Microsoft Excel 16.0 Object Library」(Excel 2019の場合)にチェックを付けて「OK」をクリックすると、ライブラリが追加され、アプリケーションからExcelファイルにアクセス可能になる

comコンポーネントへの追加 Microsoft Excel 16.0 Object Library
を選ぶ

※ 以下で紹介する例は、エラー処理をしていないので注意!

1.Excelのセルデータを読込
@Button1およびLabel1をフォームに追加し、以下を記述。
  読込テストの準備として、読み込むエクセルファイルを選択できるようにする。
Public Class Form1
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
	Dim ofd As New OpenFileDialog() With {
		.Title = "ファイル選択",
		.Filter = “エクセルファイル|*.xlsx"}
	If ofd.ShowDialog() <> DialogResult.OK Then
		Return
	End If
  	Label1.Text = ofd.FileName
  End Sub
End Class
AButton2、TextBox1(Label1から変更)およびTextBox2を追加し、以下を追加。
  TextBox1のエクセルファイルをオープンし、シート内のデータを読み込み、TextBox2に表示する。
  Sheets()は ” ” で囲ったSheet名でも指定可能。読み込むセルはRange()又はCells()で指定。
  Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
	Dim xap As New Microsoft.Office.Interop.Excel.Application()
	Dim wbk = xap.Workbooks.Open(Lable1.Text)
	Dim sht = wbk.Sheets(1)
	TextBox1.Text = sht.Range("B2").Value
	xap.Quit()
  End Sub
※エクセル使用後は必ず.Quitメソッドを実行すること!。これを実行しないとExcelファイルが開いたままでロックされた状態となる。
テスト用Excelデータ
(富山の気候)
ExcelファイルからB2セルデータ
(1月気温)を読込(Lable1のままの例)
2.Excelのセルにデータを書込
Button3を追加し、以下を記述。
  TexBox2に書き込みたいデータを入力、Button2をクリックするとTexBox1のファイルに書き込む。
  Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
	Dim xap As New Microsoft.Office.Interop.Excel.Application()
	Dim fnm = TextBox1.Text
	Dim wbk = xap.Workbooks.Open(fnm)
	Dim sht = wbk.Sheets(1)
	sht.Range("D2").Value = TextBox1.Text
	wbk.Save()
	xap.Quit()
	MsgBox(“書込終了”)
  End Sub
Excelファイルにデータを書き込み ExcelでD2セルに書込を確認
3.Excelデータをリストデータに読込・表形式で表示
Excelの2次元データをリスト(サイズを動的に変化できる配列)に格納し、DataGridViewコントロールに表形式で表示。
  Button4と「ツールボックス/データ」からDataGridView1を追加し,以下を記述。
  ファイル名を選択後、Button4をクリック。データはA列のデータが無くなるまで読み込む。
  リストデータのメンバーは新しいクラスを宣言している。
  Public Class Data
	Public Property Man As Integer
	Public Property Tmp As Single
	Public Property Prp As Single
  End Class

  Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
	Dim xap As New Microsoft.Office.Interop.Excel.Application()
	Dim fnm = Label1.Text
	Dim wbk = xap.Workbooks.Open(fnm)
	Dim sht = wbk.Sheets(1)
	Dim row = 2
	Dim itm = New List(Of Data)
	While sht.Cells(row,1).Text <> ""
		Dim Data As New Data() With {
		.Man = sht.Cells(row,1).Value,
		.Tmp = sht.Cells(row,2).Value,
		.Prp = sht.Cells(row,3).Value
		}
		itm.Add(Data)
		row = row + 1
	End While
	dataGridView1.DataSource = itm
	xap.Quit()
  End Sub
読み込んだExcelデータをDataGridViewで表示

リスト・・・コレクションの一つ
・リストの主なメソッド
Clear: 全要素削除
Add(itm): 末尾に要素を追加
AddRange(itm): 複数の要素を追加
Insert(idx,itm): 指定位置に要素を挿入
Remove(itm): 指定した要素を削除
RemoveAt(idx): 指定位置の要素を削除
Contain(itm): 要素の有無を確認
・リストの主なプロパティ
Count: 要素数を得る
Itm(Idx): 要素データ(Itemは省略可)
データグリッド
・データグリッドの主な使用例
@ データグリッドのセルデータは: DataGridView1.Rows(r).Cells(c).Value
A カーソルのあるセルのデータは: DataGridView1.CurrentCell.Value
B 現在のセル位置を得るには: DataGridView1.CurrentCellAddress.X (又は.Y)
C 現在セル位置を変更するには: DataGridView1.CurrentCell = DatGridView(row,col)
※DataGridViewはDataGridに代わる新しいコントロールで、使い方が異なるので注意。


4K有機ELテレビ VB2019_EXCEL連携