カテゴリー
SugiBlog Webデザイナー・プログラマーのためのお役立ちTips

Excelオブジェクトを使用してフリガナ入力

ACCESSからVBAでフリガナを自動入力します。

Dim xlObj As Object

Set xlObj = CreateObject("Excel.Application")

Hurigana = xlObj.GetPhonetic("文字列")

Set xlObj = Nothing

ちなみにExcelだと、

Phonetic("文字列")

だけでできるようです。

2,564 views

ACCESSからExcelファイルが開いているか調べる

ACCESSからオートメーションでExcelを開き、WorkbooksReadOnlyプロパティを取得して現在開かれているかどうかを判別します。

まずは変数を宣言

Dim xlApp  As Object
Dim xlBook As Object
Dim FileName As String

ファイルを指定します。
Environ("USERPROFILE")はWindowsの環境変数でC:\Users\ユーザー名というパスを返します。

FileName = Environ("USERPROFILE") & "\デスクトップ\sample.xls"

Excelのオートメーションオブジェクトを作成します。

Set xlApp   = CreateObject("Excel.Application")
Set xlBook  = xlApp.Workbooks.Open(FileName)

開かれたワークブックのReadOnlyプロパティがtrueなら誰かがそのファイルを開いている、ということになります。

If xlBook.ReadOnly Then
    MsgBox "開いています。"
Else
    MsgBox "開いていません。"
End If

ワークブックを閉じてExcelを終了します。

xlBook.Close
xlApp.Application.Quit

最後にオブジェクトの破棄も忘れずに

Set xlBook = Nothing
Set xlApp = Nothing
35,163 views

VBA DAOでカレントレコードの位置を取得・設定する

帳票フォームでカレントレコードの位置を取得・設定できます。
レコードを削除してその位置に戻りたい場合などに便利。

Dim rst As Object
Dim i As Integer

Set rst = Me.Recordset

'カレントレコードの位置を変数に代入(返り値:長整数型)
i = rst.AbsolutePosition

'カレントレコードを1つ先に移動させる
rst.AbsolutePosition = i + 1

Set rst = Nothing

相対位置を取得するPercentPositionというプロパティもあります。
この場合、全体を100とした浮動小数点型が返ります。

29,323 views

VBA DAOでレコード件数の取得

DAOでレコード件数を取得するには、一度MoveLastメソッドを実行しないといけないようです。
※DAO Object Libraryは参照なし

Dim rst As Object

Set rst = Me.Recordset

rst.MoveLast
MsgBox "レコード件数:" & rst.RecordCount

Set rst = Nothing
8,682 views

ACCESS VBA テーブルの削除

テーブルの一覧を取得し、削除します。
※DAO参照はなしで実行できるようにしています。

Dim tbls As Object 'DAO.TableDefs
Dim tbl  As Object 'DAO.TableDef

'テーブル一覧取得
Set tbls = CurrentDb.TableDefs

Dim DelTables As Collection

Set DelTables = New Collection

For Each tbl In tbls

	'「MSys」で始まるテーブルはシステムテーブルなので省きます
    If Not tbl.Name Like "MSys*" Then
        DelTables.Add tbl.Name
    End If

Next

For i = 1 To DelTables.Count
    'テーブル削除
    tbls.Delete (DelTables(i))
Next

MsgBox "削除件数=" & DelTables.Count
9,916 views