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

特殊フォルダ(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,952 views

ソートの複数指定 SQL

複数のフィールドでソートをしたい場合、order by句にカンマで区切り、指定します。

例)「field1」で昇順に並べ替え、「field1」が同じ値であれば「field2」を降順に並べ替えます。

select * from tablename order by field1, field2 desc

※昇順・降順はフィールド毎に指定する
上の例で「field1」も降順にしたい場合は

select * from tablename order by field1 desc, field2 desc

とする

1,840 views

他のフォームを参照する

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

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

Dim Fm As Form

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

Set Fm = Form_フォーム

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

2,028 views

配列に値を追加する関数

Private Function array_push(source As Variant, destination As String, flag As Boolean) As String

    Dim Ary() As String
    Dim delimiter As String

    Select Case (flag)
       
        Case True  '選択地域文字列
            delimiter = " "
       
        Case False '選択地域
            delimiter = ":"
   
    End Select

    If InStr(source, destination) < 0 Then
        array_push = source
        Exit Function
    End If

    If Not IsNull(source) Then
        Ary = Split(source, delimiter)
        ReDim Preserve Ary(UBound(Ary) + 1) As String
        Ary(UBound(Ary)) = destination
        array_push = Join(Ary, delimiter)
        array_push = value_splice(array_push, ":")
        DoEvents
        array_push = repRecur(array_push, ":")
    Else
        array_push = destination
    End If

End Function
1,993 views

ファイル名を変更

ファイル名を変更するには、DirectoryクラスのMove()メソッドを使用します。

//現在の名前と新しい名前を引数に指定します。
Directory.Move("Test.txt", "Test.bak");

※但し、異なるボリューム間は移動できない

異なるボリューム間で移動したい場合はFileInfoクラスを使用します。

FileInfo fInfo = new FileInfo ("Test.txt");
fInfo.MoveTo("Test.bak");

※但し、移動先に同名のファイルが存在すればエラーが発生

1,741 views