Access VBA ノート(サンプルコード)

Hide Tamura の Access VBA ノート

Access-VBA [FileSystemObject] ドライブ情報の取得 GetDrive (DriveType)

Sub ドライブ準備()
    Dim FSO As New FileSystemObject
    Dim myDrive As Drive
    Const strDrive = "F"
    
    Set myDrive = FSO.GetDrive(strDrive)
    
    If Not myDrive.IsReady Then
        MsgBox "Dドライブの準備が出来ていません", vbExclamation, "ドライブ準備"
    End If
    
    Select Case myDrive.DriveType
    
        Case 0
            MsgBox "不明"
        
        Case 1
            MsgBox "リムーマブルディスク"
        
        Case 2
            MsgBox "ハードディスク"
        
        Case 3
            MsgBox "ネットワークディスク"
        
        Case 4
            MsgBox "CD-ROM"
        
        Case 5
            MsgBox "RAM ディクス"
    
    End Select
    
    Set FSO = Nothing
End Sub


パス Path
タイプ DriveType
ドライブ名 DriveLetter
総容量 TotalSize
空容量 FreeSpace
準備 IsReady


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Access-VBA [FileSystemObject] テキストファイルのコピー CopyFile

Sub テキストファイルのコピー()
    Dim FSO As New FileSystemObject
    Dim MyPath As String
    Dim MyFolder As String
    Dim MyFile As String, myFile2 As String

    MyFolder = "Sample"
    MyFile = "File1.csv"
    myFile2 = "File2.csv"
    MyPath = CurrentProject.Path & "\" & MyFolder & "\"
    
    If FSO.FileExists(MyPath & MyFile) Then
        FSO.CopyFile MyPath & MyFile, MyPath & myFile2
    End If
    
    Set FSO = Nothing
    
End Sub


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



 

Access-VBA コントロールの初期化 ControlType  For Each...Next

Private Sub コントロールの初期化()

    Dim myCtrl As Object
    
    For Each myCtrl In Me.Controls
    
        Select Case myCtrl.ControlType
        
            Case acTextBox, acComboBox
                myCtrl.Value = ""
            
            Case acCheckBox
                myCtrl.Value = False
        
            Case acOptionGroup
                myCtrl.Value = 0
        
        End Select
        
    Next

End Sub

----------------------------------------------------------

Private Sub コントロールの初期化2()

    Dim myCtrl As Object
    
    For Each myCtrl In Me.Controls
    
        If myCtrl.ControlType = acTextBox Then
            myCtrl.Value = ""
        End If
        
        If myCtrl.ControlType = acComboBox Then
            myCtrl.Value = ""
        End If
        
        If myCtrl.ControlType = acCheckBox Then
            myCtrl.Value = False
        End If
        
        If myCtrl.ControlType = acOptionGroup Then
            myCtrl.Value = 0
        End If
        
    Next

End Sub


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Access-VBA Setでオブジェクト型変数を設定したら最後に破棄する習慣 Set Object型変数 = Nothing

Sub Test()
    Dim MyForm As Form

    DoCmd.OpenForm "フォーム名"
    Set MyForm = Forms("フォーム名")

(処理)

    Set MyForm = Nothing

End Sub


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Access-VBA ADO トランザクション

Option Compare Database
Option Explicit

Dim myADOcon As New ADODB.Connection
Dim myRecSet As New ADODB.Recordset

Const Prv_Jet40 = "Provider=Microsoft.Jet.OLEDB.4.0;"

Sub Open_ADOdb()
    Set myADOcon = CurrentProject.Connection
End Sub

Sub Close_myRecSet()
    myRecSet.Close
    Set myRecSet = Nothing
End Sub

Sub Close_ADOdb()
    Set myADOcon = Nothing
End Sub

Sub 個人確定申告管理_顧客ID付け直し()
    '顧客IDを1番から付け直す
    Call Open_ADOdb
    Call K_UPdate
    Call Close_myRecSet
    Call Close_ADOdb
End Sub

Sub K_UPdate()
    Dim i As Long
    Dim mySQL As String
    
    mySQL = "SELECT * FROM tbl個人確定申告管理 ORDER BY フリガナ;"
    
    On Error GoTo ErrorCheck
    
     'トランザクションを開始
    myADOcon.BeginTrans
    
    myRecSet.Open mySQL, myADOcon, adOpenKeyset, adLockOptimistic
    
    i = 1
    
    Do Until myRecSet.EOF
    
        myRecSet(1).Value = i
        i = i + 1

        myRecSet.Update
        myRecSet.MoveNext
    
    Loop

     'トランザクションにおける変更を保存し終了
    myADOcon.CommitTrans

    Exit Sub

ErrorCheck:
    
     'トランザクションにおける変更を取り消し
    myADOcon.RollbackTrans
    MsgBox Err.Description
    
End Sub


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Access-VBA [DAO] カレントレコードを移動する MoveFirst MoveLast MoveNext MovePrevious

Sub sumple4()
    Dim myDB As DAO.Database
    Dim myRS As DAO.Recordset
    
    Set myDB = CurrentDb
    Set myRS = myDB.OpenRecordset("tbl名簿", dbOpenTable) 'クエリを開いても良い
    
    myRS.MoveFirst
    myRS.MoveLast
    myRS.MoveNext
    myRS.MovePrevious
    myRS.Move (5)
    
    RS.Close 
    Set myRS = Nothing: Set myDB = Nothing

End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Access-VBA [DAO] カレントレコードのフィールドデータ表示形式 myRS![住所].Value

Sub sumple4()
    Dim myDB As DAO.Database
    Dim myRS As DAO.Recordset
    
    Set myDB = CurrentDb
    Set myRS = myDB.OpenRecordset("tbl名簿", dbOpenTable) 'クエリを開いても良い
    
    Debug.Print myRS![住所].Value
    Debug.Print myRS![住所]
    Debug.Print myRS!住所
    Debug.Print myRS("住所")
    Debug.Print myRS.Fields("住所")
    Debug.Print myRS.Fields.Item("住所")
    Debug.Print myRS(3)

    RS.Close    
    Set myRS = Nothing: Set myDB = Nothing

End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Access-VBA [DAO] フィールド数を取得 TD.Fields.Count RS.Fields.Count

Sub test1()
    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    Dim RS As DAO.Recordset
    Dim MySQL As String
    
    Set DB = CurrentDb
    Set TD = DB.TableDefs!tbl商品
    
    Debug.Print "テーブルのフィールド数は、" & TD.Fields.Count
    
    MySQL = "SELECT 商品名 FROM tbl商品 WHERE 在庫数>50"
    
    Set RS = DB.OpenRecordset(MySQL)
    
    Debug.Print "レコードセットのフィールド数は、" & RS.Fields.Count
    
    RS.Close
    Set RS = Nothing: Set TD = Nothing: Set DB = Nothing
    
End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ


 

Access-VBA [DAO] フィールド名を取得 TD.Fields FD.Name

Sub test1()
    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    Dim FD As DAO.Field
    
    Set DB = CurrentDb
    Set TD = DB.TableDefs("tbl商品")
    
    For Each FD In TD.Fields
        Debug.Print FD.Name
    Next
    
    Set TD = Nothing: Set DB = Nothing
    
End Sub


 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ



Access-VBA [DAO] テーブル名を取得 TableDefs TD.Name

Sub test1()
    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    
    Set DB = CurrentDb
    
    For Each TD In DB.TableDefs
        Debug.Print TD.Name
    Next
    
    Set TD = Nothing: Set DB = Nothing
    
End Sub

 ↓ facebook のフォローで応援してください。お願いします。



Microsoft Office ブログランキングへ





記事検索
Access VBA 担当 Hide Tamura
■VBA Expert
VBA Expert Standard Crown
ExcelVBA Standard
Access VBA Standard
Excel2002 VBA Standard
■MICROSOFT OFFICE USER SPECIALIST
Microsoft Excel version2002 Expert
Microsoft Excel version2002


最新記事
Excelで作る経営計画
Excelで利益計画を立てましょう!会社にいくらの利益が必要で、その為の売上高は?

Excelで作る経営計画
Excel 関数 ノート
Excel関数を中心に、Excelの便利機能や、意外としらない使い方など書いていきます。

Excel 関数 ノート
Excel VBAノート
Hide Tamura の個人的なVBAノートです。

頻繁に使うVBAコードなどを記録しコピペして使う為に作りました。お役に立てるようでしたら、お使いください。

アクセスカウンター

    • ライブドアブログ