EXCEL VBA備忘録 ACCESS連携 [EXCEL]
リファレンスはまずはここを見る?
https://docs.microsoft.com/ja-jp/office/vba/api/overview/excel
何と言いますか今更ですが、エクセルVBAをやってみたんですよん。
意外と使える!と言うかデータ収集してエクセルにダイレクトにシートやセルに代入できるのは、やはり魅力的なので。
プログラムの観点からエクセルを理解するのは、おもしろいかもしれない!
ACCESS連携
!ACCESSのテーブルを展開する。※クエリでも同じ
!データの並び替え
データベースとは関係ないが、どちらかと言えば人間が見やすくする為にレコードの並び替えをする。
!検索
並び替えの次は検索でしょう!Rangeで範囲指定しないと、トンでもな結果になる。すごく悩んだ。
codeが検索したい文字
以下、順次追加
今読んでいる本
気になっている本
https://docs.microsoft.com/ja-jp/office/vba/api/overview/excel
何と言いますか今更ですが、エクセルVBAをやってみたんですよん。
意外と使える!と言うかデータ収集してエクセルにダイレクトにシートやセルに代入できるのは、やはり魅力的なので。
プログラムの観点からエクセルを理解するのは、おもしろいかもしれない!
ACCESS連携
!ACCESSのテーブルを展開する。※クエリでも同じ
' データベースを開く Dim DBE As Object, DB As Object, buhinRS As Object Set DBE = CreateObject("DAO.DBEngine.120") Set DB = DBE.OpenDatabase(filePath) ' filePathはACCESSのデータベースへのファイルパス Set buhinRS = DB.OpenRecordset("部品") ' 部品テーブルを引っ張る Dim recordCount As Long recordCount = buhinRS.recordCount - 2 ' レコードの数を取得するが、なぜか2多い '書式再設定 テーブルのフィールドタイプの合わせる Worksheets("BUHIN").Range("A2", Worksheets("BUHIN").Cells(recordCount+2, 1)).NumberFormatLocal = "0" Worksheets("BUHIN").Range("B2", Worksheets("BUHIN").Cells(recordCount+2, 2)).NumberFormatLocal = "yyyy/mm/dd" Worksheets("BUHIN").Range("C2", Worksheets("BUHIN").Cells(recordCount+2, 3)).NumberFormatLocal = "0" Worksheets("BUHIN").Range("D2", Worksheets("BUHIN").Cells(recordCount+2, 4)).NumberFormatLocal = "@" Worksheets("BUHIN").Range("E2", Worksheets("BUHIN").Cells(recordCount+2, 5)).NumberFormatLocal = "0" Worksheets("BUHIN").Range("F2", Worksheets("BUHIN").Cells(recordCount+2, 6)).NumberFormatLocal = "@" ' フィールド個別にセルに代入していく Dim row As Long row = 2 Do Until buhinRS.EOF Worksheets("BUHIN").Cells(row, 1).Value = buhinRS(0) Worksheets("BUHIN").Cells(row, 2).Value = buhinRS(1) Worksheets("BUHIN").Cells(row, 3).Value = buhinRS(2) Worksheets("BUHIN").Cells(row, 4).Value = buhinRS(3) Worksheets("BUHIN").Cells(row, 5).Value = buhinRS(4) Worksheets("BUHIN").Cells(row, 6).Value = buhinRS(5) row = row + 1 buhinRS.MoveNext Loop buhinRS.Close Set buhinRS = Nothing DB.Close Set DB = Nothing
!データの並び替え
データベースとは関係ないが、どちらかと言えば人間が見やすくする為にレコードの並び替えをする。
' データソート Worksheets("BUHIN").Range("A2", Worksheets("BUHIN").Cells(row, 6)) _ .Sort Key1:=Worksheets("BUHIN").Range("C1"), order1:=xlAscending
!検索
並び替えの次は検索でしょう!Rangeで範囲指定しないと、トンでもな結果になる。すごく悩んだ。
codeが検索したい文字
Dim Obj As Object Set Obj = Worksheets(sheet).Range("C2", Worksheets(sheet).Cells(downCell.row, 2)).Find( _ After:=Worksheets(sheet).Range("C2"), _ What:=code, _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByColumns) If Obj Is Nothing Then ' 見つからなかった時の処理 Else ' 見つかった時の処理 End If
以下、順次追加
今読んでいる本
Excel VBAの教科書 (Informatics & IDEA)
- 作者: 古川 順平
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/07/21
- メディア: 単行本
気になっている本
パーフェクトExcel VBA (PERFECT SERIES)
- 作者: 高橋 宣成
- 出版社/メーカー: 技術評論社
- 発売日: 2019/11/25
- メディア: 単行本(ソフトカバー)
2019-11-07 17:31
nice!(0)
コメント(0)
コメント 0