ray88’s diary

お仕事で困ったとき用の自分用の覚書

Excel VBA 印刷範囲の取得

Function GetPrintAreas(ByVal targetSheet As Worksheet) As String()
'--------------------------------------------------------------
'機能:指定されたワークシートの印刷範囲を取得する
'引数:対象のワークシートオブジェクト
'戻り値:印刷範囲の文字列の配列(["A1:C3","D1:F8"]のような形式で返します)
'--------------------------------------------------------------
    Dim printArea As String
    Dim printAreaArray() As String
    Dim i As Integer
    
    On Error Resume Next
    printArea = targetSheet.PageSetup.printArea
    On Error GoTo 0
    
    If Not printArea = "" Then
        printAreaArray = Split(printArea, ",")
        ReDim Preserve printAreaArray(UBound(printAreaArray))
        
        For i = 0 To UBound(printAreaArray)
            printAreaArray(i) = Replace(printAreaArray(i), "$", "")
        Next i
    Else
        ReDim Preserve printAreaArray(0)
        printAreaArray(0) = "印刷範囲なし"
    End If
    
    GetPrintAreas = printAreaArray
End Function