読者です 読者をやめる 読者になる 読者になる

DuKiccoの雑記

My Life Is Myself

【必携Function-1】【エクセル2013,VBA】

エクセル VBA

新しくエクセルのアプリケーションを作る際には、便利なFunctionの一群をまずはごっそり移すところからはじめます。

以下、必携のファンクションを紹介します。

1.GetDeskTopPath
デスクトップのパスを取得するファンクション。例えば↓のような使い方をします。
デスクトップのパスをデフォルトの保存場所などにしておくと、不特定のPCでも動作するファイルになります。

Thisworkbook.pathも同じような目的で使用します。また「("Desktop")」を変更すればマイドキュメント等のパスの取得も可能です。

2.GetUserName,GetComputerName
user nameやコンピュターnameを取得するファンクション。例えば↓のような使い方をします。
社用PCなどuser nameと利用者情報の対応表が存在する場合、このファンクションを利用して利用者情報の自動入力補助ができるようになります。

3.SelectFold,SelectFile
ダイヤログボックスからフォルダやファイルを指定(=パスを取得)できます。
動的なアプリケーションに必須です。

動的にしておくと、様々なデータやファイルで検証しやすいのでテストの際などにも便利です。

Sub 動作確認()

MsgBox "Functionの動作確認 "
MsgBox GetDeskTopPath
MsgBox GetUserName
MsgBox GetComputerName
MsgBox SelectFold
MsgBox SelectFile

End Sub

Function GetDeskTopPath()
    'デスクトップパス取得
    Dim MyWSH  As Object
    Set MyWSH = CreateObject("WScript.Shell")
    
    GetDeskTopPath = MyWSH.SpecialFolders("Desktop")
    
    Set MyWSH = Nothing
End Function

Function GetUserName()
    'ユーザーネーム取得
    Dim WshNetworkObject As Object
    Set WshNetworkObject = CreateObject("WScript.Network")
      
    GetUserName = WshNetworkObject.UserName

    Set WshNetworkObject = Nothing
    
End Function

Function GetComputerName()
    'コンピューターネーム取得
    Dim WshNetworkObject As Object
    Set WshNetworkObject = CreateObject("WScript.Network")
      
    GetComputerName = WshNetworkObject.ComputerName

    Set WshNetworkObject = Nothing
    
End Function

Function SelectFold() As String

With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "フォルダー選択"
        If .Show = -1 Then
            SelectFold = .SelectedItems(1)
        Else                'キャンセルボタンがクリックされた
            SelectFold = "CANCEL"
        End If
End With

End Function

Function SelectFile() As String

With Application.FileDialog(msoFileDialogFilePicker)
.Title = "ファイル選択"
        If .Show = -1 Then
            SelectFile = .SelectedItems(1)
        Else                'キャンセルボタンがクリックされた
            SelectFile = "CANCEL"
        End If
End With

End Function