上記URLのサイトを見てVBAの学習をしております。
以前はわからないコードについて質問させていただきました。
ソースレビューを受け手直しをしたのですがまだ見づらいと思っています。
誰が見ても見やすくするにはどうすればいいか教えてくださると助かります。
言語はjavaが使えます
よろしくお願いします。
VBA
1Option Explicit 2 3'スコープがPrivateになっている定数 4 5Private Const g_cnsTitle = "ADOによるMDBデータ取得" 6'MicrosoftのOLEDBを使うことを宣言 7Private Const g_cnsAdoConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" 8'Accessデーターベースのファイル名? 9Private Const g_cnsMdbName = "SampleCorp1.mdb" 10 11Public Sub GetMDBDateByADO() 12 13 '変数を定義 14 15 Dim objFso As FileSystemObject ' FileSystemObject 16 Dim dbCon As ADODB.Connection ' ADODB.Connection 17 Dim dbRes As ADODB.Recordset ' ADODB.Recordset 18 Dim objSh As Worksheet ' Excel.Worksheet 19 Dim strFilename As String ' フルパスファイル名 20 Dim strConnection As String ' 接続文字列 21 Dim strSQL As String ' SQL文編集WORK 22 Dim strToday As String ' SQL文本日編集WORK 23 Dim lngRow As Long ' 行INDEX 24 Dim lngCol As Long ' 列INDEX 25 26 'データベースのあるファイルのパス 27 28 Set objFso = New FileSystemObject 29 strFilename = objFso.BuildPath(ThisWorkbook.Path, g_cnsMdbName) ' 30 Set objFso = Nothing 'オブジェクトへの参照を解除 31 32 '接続文字列の編集 33 strConnection = g_cnsAdoConnectString & strFilename & "';" 34 35 'データベースへの接続 36 Set dbCon = New ADODB.Connection 37 dbCon.Open strConnection 38 39 'クライアントカーソル設定 40 dbCon.CursorLocation = adUseClient 'カーソルをクライアント側に持つか、サーバ側(例:Access)に持つかの設定 mdbはどちらにも持たない? 41 42 '参照SQL文 43 strToday = "#" & Format(Date, "yyyy-mm-dd") & "#" '変換? 44 45 strSQL = "SELECT H.[BUSYO_CD]" ' (00)部署コード 46 strSQL = strSQL & " , B.[BUSYO_NM]" ' (01)部署名 47 strSQL = strSQL & " , H.[YAKU_CD]" ' (02)役職コード 48 strSQL = strSQL & " , Y.[YAKU_NM]" ' (03)役職名 49 strSQL = strSQL & " , H.[SCD]" ' (04)社員コード 50 strSQL = strSQL & " , S.[KANJI_SEI]+S.[KANJI_MEI]" ' (05)氏名(漢字) 51 strSQL = strSQL & " , S.[KANA_SEI]+S.[KANA_MEI]" ' (06)氏名(カナ) 52 strSQL = strSQL & " , S.[NYUSYA_YMD]" ' (07)入社日 53 strSQL = strSQL & " , S.[TAISYOKU_YMD]" ' (08)退職日 54 55 strSQL = strSQL & " FROM ((([MST_HAIZOKU] AS H" '取得したいテーブルを指定 56 strSQL = strSQL & " INNER JOIN [MST_SYAIN] AS S ON H.[SCD]=S.[SCD])" 'テーブルを内部結合 57 strSQL = strSQL & " LEFT OUTER JOIN [MST_BUSYO] AS B ON H.[BUSYO_CD]=B.[BUSYO_CD])" '外部結合 58 strSQL = strSQL & " LEFT OUTER JOIN [MST_YAKU] AS Y ON H.[YAKU_CD]=Y.[YAKU_CD])" '外部結合 59 strSQL = strSQL & " WHERE S.[NYUSYA_YMD]<=" & strToday '入社日と本日日付を比較・制限して検索 60 strSQL = strSQL & " AND (S.[TAISYOKU_YMD] IS NULL OR S.[TAISYOKU_YMD]>" & strToday & ")" ' 61 strSQL = strSQL & " ORDER BY H.[BUSYO_CD],H.[YAKU_CD],H.[SCD];" 'クエリの結果を並べ替えする 62 63 '参照SQL文の発行 64 Set dbRes = New ADODB.Recordset 65 dbRes.Open strSQL, dbCon, adOpenKeysetm, adLockReadOnly 'Openステートメント ファイル開く 66 67 '画面描画更新停止 描画を停止し処理を高速化 68 Call GP_StopSCUPD '標準モジュール 「ZZZ_Module」内の「GP_StopSCUPD」プロシージャを呼び出し 69 70 'シートの初期化 71 Set objSh = ThisWorkbook.Worksheets(1) 72 With objSh 73 If .FilterMode Then .ShowAllData 74 .Rows("2:" & .Rows.Count).ClearContents 75 IngRow = 1 76 77 '先頭レコードからEOFまで繰り返す End of Fileの略 78 Do Until dbRes.EOF 79 80 '行を加算 81 IngRow = IngRow + 1 82 83 '全列をシートに展開 84 For IngCol = 0 To 8 85 .Cells(IngRow, IngCol + 1).Value = dbRes.Fields(lngCol).Value 86 Next IngCol 87 '次のレコードに移る 88 dbRes.MoveNext 89 Loop 90 91 End With 92 93 ' レコードセット、データベースを閉じる 94 dbRes.Close 95 Set dbRes = Nothing 96 dbCon.Close 97 Set dbCon = Nothing 98 99 ' 画面描画更新復帰 100 Call GP_StartSCUPD 101 102End Sub
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/01 00:39