MySQLデータベースと接続してテーブルの内容をセルに表示する
<分類:データベース>
<使用例:MySQLデータベースと接続してテーブルの内容をセルに表示する>
<MySQLのサンプルデータベースの構成 ※予め作成しておく>
<データベース:dbtest1>
<テーブル:testtbl1>
<テーブルのフィールド:no_id(int型)とnaiyo(varchar型)>
<プログラム例>
Sub Mysql接続SELECT() Dim x, x2 As Long Dim y As Long Dim strSQL As String Dim adoCn As Object Dim adoRs As Object Set adoCn = CreateObject("ADODB.Connection") Set adoRs = CreateObject("ADODB.Recordset") 'SERVER=ローカルの場合localhost 'DATABASE= useするデータベース名 'USER= MySQLの管理ユーザ名 'password= MySQLで設定したパスワード adoCn.Open "Driver={MySQL ODBC 8.0 Unicode Driver};" & _ "SERVER=localhost;" & _ "DATABASE=dbtest1;" & _ "USER=root;" & _ "password=xxxxxxxx;" strSQL = "SELECT * FROM testtbl1;" Set adoRs = adoCn.Execute(strSQL) y = 1 Do Until adoRs.EOF If y = 1 Then For x = 1 To adoRs.Fields.Count '先頭フィールド名の設定 Cells(1, x).Value = adoRs.Fields(x - 1).Name Next x Else Cells(y, 1).Value = adoRs!no_id 'フィールド1内容 Cells(y, 2).Value = adoRs!naiyo 'フィールド2内容 adoRs.MoveNext End If y = y + 1 Loop adoRs.Close adoCn.Close Set adoRs = Nothing Set adoCn = Nothing End Sub
文字列の両端のみスペースを取り除いて文字列を抜き出す
<分類:値抜き取り>
<使用例:文字列( 123456789 ABCDEF )から(123456789 ABCDEF)>
<プログラム例>
<分類:値抜き取り>
Sub 使用例() Dim s As String s = " 123456789 ABCDEF " MsgBox (共通_文字列抜出し両端空白削除(s)) End Sub Function 共通_文字列抜出し両端空白削除(p1) 'p1:対象文字列 Dim i As Long Dim mojisu As Long Dim mojista As Long Dim mojiend As Long mojisu = Len(p1) 共通_文字列抜出し両端空白削除 = "" For i = 1 To mojisu - 1 If Mid(p1, i, 1) = " " Or _ Mid(p1, i, 1) = " " Then Else mojista = i Exit For End If Next i For i = mojisu To 1 Step -1 If Mid(p1, i, 1) = " " Or _ Mid(p1, i, 1) = " " Then Else mojiend = i Exit For End If Next i 共通_文字列抜出し両端空白削除 = Mid(p1, mojista, mojiend - mojista + 1) End Function
ワークシートのデータの最終行を取得する
<分類:値取得>
<使用例:①上から下方向へデータの入った連続した行の最終行を取得、また、②Excelの最大行から上方向にデータが存在する行まで調べて最終行を取得 ①と②お互い一致したら正常、不一致だったら、データの行間に隙間があるので異常(最終行取得エラーとして0を出力)>
<注意:サンプルデータを作成するプログラムになっていますので、Sheet1は何もデータがないシートをご用意ください>
<プログラム例>
Sub 使用例() Dim max_row As Long 'サンプルデータ作成 Cells(1, 1) = "2019/9/8" Cells(1, 2) = "00:00:00" Cells(1, 3) = "28.7" Cells(2, 1) = "2019/9/8" Cells(2, 2) = "01:00:00" Cells(2, 3) = "29.0" Cells(3, 1) = "2019/9/8" Cells(3, 2) = "02:00:00" Cells(3, 3) = "29.1" Cells(4, 1) = "2019/9/8" Cells(4, 2) = "03:00:00" Cells(4, 3) = "29.1" max_row = 共通_最終行取得("Sheet1") Cells(max_row, 1).Select MsgBox ("最終行は" & max_row & "です") End Sub Function 共通_最終行取得(sheet_name As String) Dim maxrow_d As Long Dim maxrow_u As Long maxrow_d = Worksheets(sheet_name).Cells(1, 1).End(xlDown).Row maxrow_u = Worksheets(sheet_name).Cells(Rows.Count, 1).End(xlUp).Row If maxrow_d = maxrow_u Then 共通_最終行取得 = maxrow_u Else 共通_最終行取得 = 0 MsgBox ("最終行不一致") End If End Function