カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

VBA 数値変換

・10進数を16進数に変換

Hex(number)

・10進数を8進数に変換

Oct(number)

・16進数を10進数に変換

Val("&h" & number)

・8進数を10進数に変換

Val("&o" & number)
1,763 views

DAOでレコード検索

Dim dbs As Database
Dim rst As Recordset
Dim strCriteria As String

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("住所テーブル", _
dbOpenDynaset)

With rst
    strCriteria = "住所 Like '東京*'"
    .FindFirst strCriteria
    Do Until .NoMatch
        Debug.Print !ID, !氏名, !住所, !郵便番号
        .FindNext strCriteria
    Loop
    .Close
End With
2,426 views

特殊フォルダのパスを取得したいとき

特殊なフォルダはパソコンによって、あるいはWindowsによって場所がまちまちです。
そんなときそのパスを取得する方法を知っていれば便利ですね。
サンプル1では、デスクトップとマイドキュメントのパスを知ることができます。
サンプル2では、Windowsのセットアップ場所、システムフォルダ、一時フォルダのパスを取得できます。

Public Sub GetSpecialFolder_1()
'特殊フォルダのパスを取得_1
    Dim ws

    Set ws = CreateObject("WScript.Shell")

    MsgBox "Desktop= " & ws.SpecialFolders("Desktop")
    MsgBox "MyDocuments= " & ws.SpecialFolders("MyDocuments")

End Sub

続きを読む…»

5,831 views

特殊フォルダ(Windowsフォルダなど)を取得する

構文 Object.GetSpecialFolder(SpecialFolder)

設定項目 内容
Object FileSystemObjectオブジェクトを指定[省略不可]
SpecialFolder 取得するフォルダの種類を定数で指定[省略不可]

GetSpecialFolderメソッドは、Windowsフォルダ、Systemフォルダ、テンポラリフォルダを取得します。
引数には次の表の定数を指定します。

・引数に指定する定数
定数 値 内容
WindowsFolder 0 Windowsフォルダ
SystemFolder 1 Systemフォルダ
TemporaryFolder 2 テンポラリフォルダ。環境変数TMPより取得

サンプルは、Windowsフォルダ、Systemフォルダ、テンポラリフォルダを順に取得して、メッセージダイアログに表示しています。

● サンプル ●

'特殊フォルダ(Windowsフォルダなど)を取得する
'   [ツール]→[参照設定]で「Microsoft Scripting Runtime」をチェック

Sub Sample()
    Dim myFileSystem As New Scripting.FileSystemObject
    MsgBox "Windowsフォルダ: " & _
            myFileSystem.GetSpecialFolder(WindowsFolder)
    MsgBox "システムフォルダ: " & _
            myFileSystem.GetSpecialFolder(SystemFolder)
    MsgBox "テンポラリフォルダ: " & _
            myFileSystem.GetSpecialFolder(TemporaryFolder)
End Sub

● 補足 ●

FileSystemObjectオブジェクトは利用する前に参照設定を行う必要があります。
参照設定は、[ツール]メニューから[参照設定]コマンドを選択して[参照設定]ダイアログボックスを表示します。
ダイアログボックスが表示されたら、一覧から「Microsoft Scripting Runtime」をチェックして[OK]ボタンをクリックします。

3,957 views

他のフォームを参照する

Form_フォーム.コントロール名.value

などで値を取得できるがインスタンスを生成したほうが簡単で後が楽。

Dim Fm As Form

と、プロシージャ外で変数を定義しておき、

Set Fm = Form_フォーム

でオブジェクトのインスタンスを生成
あとは「Fm.コントロール名.Value」でアクセスできる

2,034 views