New-B01

NewBaseMacro(2025)

  1. 下記ボックス内をコピーし、標準モジュールに貼り付ける。
  2. モジュール名を【B01_Tool】に変更する。
 モジュール名:B01_Tool
Option Explicit

' +++********************************************************+++
'     フォルダを作成(wsCtrlの指定セルから)
' +++********************************************************+++
Sub MakeFdr()

    Dim fdrName As String
    Dim i As Long
    Dim r As Long
    Dim varRow As Variant

    Dim nmlTmn As Boolean           '正常終了フラグ:normal Termination

    nmlTmn = False
    myProcd = "MakeFdr"

    On Error GoTo MakeFdr_Err

    Call showStatus("フォルダ作成 中")
    Call StopUpdating
    Call SetObject

    varRow = Split("7,14", ",")
    With wsCtrl
        For i = 0 To UBound(varRow)
            r = CLng(varRow(i))
            fdrName = Trim(.Cells(r, 4))
            fdrName = ThisWorkbook.Path & "\" & fdrName
            If Dir(fdrName, vbDirectory) = "" Then
                MkDir fdrName
            End If
        Next i
    End With

    nmlTmn = True

MakeFdr_Exit:
    On Error Resume Next
    Call ReSetObject
    Call Updating
    If nmlTmn Then MsgBox " 完了♪"
    On Error GoTo 0
    Exit Sub

MakeFdr_Err:
    MsgBox "実行時エラー:" & Err.Number & vbCrLf & _
           Err.Description & vbCrLf & _
           "処理を終了します。", vbExclamation, myProcd
    Err.Clear
    GoTo MakeFdr_Exit

End Sub

'================================================
'   指定シートのデータをテーブルに変換する(引数付き)
'   Call ConvertToTable(wsWork, "ImportedTable")
'================================================
Sub ConvertToTable(ByVal targetSheet As Worksheet, ByVal tableName As String)
    Dim tblRange As Range
    Dim tblObj As ListObject
    Dim MaxRow As Long
    Dim MaxCol As Long

    With targetSheet
        ' 最終行・最終列を取得
        MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        MaxCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

        ' テーブル範囲を設定(A1から最終セルまで)
        Set tblRange = .Range(.Cells(1, 1), .Cells(MaxRow, MaxCol))

        ' 既存テーブルがあれば削除(重複防止)
        On Error Resume Next
        For Each tblObj In .ListObjects
            tblObj.Delete
        Next
        On Error GoTo 0

        ' テーブルを作成(引数で指定された名前を付ける)
        .ListObjects.Add(xlSrcRange, tblRange, , xlYes).Name = tableName
    End With
End Sub
'+++*******************************************************+++
'    フィルター解除(テーブルでも通常フィルターでも対応)
'+++*******************************************************+++
Public Sub ClearAllFilters()
    Dim lo As ListObject
    Dim ws As Worksheet
    Set ws = ActiveSheet

    ' テーブルのフィルター解除
    For Each lo In ws.ListObjects
        If lo.ShowAutoFilter Then lo.AutoFilter.ShowAllData
    Next lo

    ' 通常フィルターの解除
    If ws.AutoFilterMode Then
        If ws.FilterMode Then ws.ShowAllData
    End If
End Sub
'+++*******************************************************+++
'    csvが開かれているか確認
'+++*******************************************************+++
Function IsFileOpen(filePath As String) As Boolean
    Dim ff As Integer
    On Error Resume Next
    ff = FreeFile
    Open filePath For Binary Access Read Write Lock Read Write As #ff
    If Err.Number <> 0 Then
        IsFileOpen = True
    Else
        IsFileOpen = False
        Close #ff
    End If
    On Error GoTo 0
End Function
'+++*******************************************************+++
'    全シートA1に画面スクロール
'+++*******************************************************+++
Sub exeAllA1()
    Dim i As Long
    Call StopUpdating
    Call showStatus("セルA1 画面セット中")
    
    If IsCall = False Then Call StopUpdating
    
    With ActiveWorkbook
        'エラーを無視
        On Error Resume Next
        For i = .Sheets.Count To 1 Step -1
            With .Worksheets(i)
                If .Visible Then
                    .Select
                    Application.GoTo reference:=Range("A1"), _
                                     Scroll:=True
                End If
            End With
        Next i
        'エラー制御を戻す
        On Error GoTo 0
    End With
    If IsCall = False Then Call Updating
    '最小化
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then
        Windows(ThisWorkbook.Name).WindowState = xlMinimized
    End If
End Sub

コメント

タイトルとURLをコピーしました