Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Excel & VBA---Brain Training


  • 01

엑셀문서와 파워포인트문서를 목록에서 열고 닫기

이런 문제가 있었다
질문하신분의 화일을 그대로 올릴수 없으니
문제 자체를 만들어 보자
아래 코드를 실행하면

Sub createFakeData()
On Error Resume Next
Dim sPath As String
Application.DisplayAlerts = False
Worksheets("FileList").Delete
Application.DisplayAlerts = True
sPath = ThisWorkbook.Path & "\"
With Worksheets.Add
    With .Range("A4")
        With .Worksheet.Buttons.Add(.Left, .Top, .Width, .Height)
            .OnAction = "OpenFile"
            .Caption = "OpenFile"
        End With
    End With
    .Name = "FileList"
    With .Range("A5").Resize(, 2)
        .Value = Array("내용", "화일명")
        .Interior.ColorIndex = 6
    End With
    Dim iX As Integer
    For iX = 1 To 10
        With .Range("A" & iX + 5).Resize(, 2)
            
        If Int(Rnd() * 2) = 0 Then
            createXLandSave sPath & "excelFile_" & iX & ".xls"
            .Cells(1) = "XL_File_" & iX
            .Cells(2) = sPath & "excelFile_" & iX & ".xls"
        Else
            cratePPTandSave sPath & "pptFile_" & iX & ".ppt"
            .Cells(1) = "PPT_File_" & iX
            .Cells(2) = sPath & "pptFie_" & iX & ".ppt"
        End If
        End With
    Next
    With .UsedRange
        .Font.Name = "맑은 고딕"
        .Font.Size = 11
        .Columns.AutoFit
    End With
End With
End Sub
'/////////// 엑셀화일만들기
Sub createXLandSave(sFileName As String)
On Error Resume Next
If Dir(sFileName) = "" Then
    With Workbooks.Add.Worksheets(1).Range("A1")
        .Value = "'" & sFileName
        .Worksheet.Parent.SaveAs sFileName
        .Worksheet.Parent.Close
    End With
End If
End Sub
'///////////// 파워포인트화일만들기
Sub cratePPTandSave(sFileName As String)
On Error Resume Next

If Dir(sFileName) = "" Then
    Dim oPPT As Object 'New PowerPoint.Application
    Dim oPre As Object 'PowerPoint.Presentation
    Set oPPT = CreateObject("PowerPoint.Application")
    Dim oSlide As Object 'Slide
    oPPT.Visible = True
    Set oPre = oPPT.Presentations.Add
    With oPre
        Set oSlide = .Slides.Add(.Slides.Count + 1, 12) 'ppLayoutBlank)
        oSlide.Shapes.AddShape msoShape24pointStar, 10, 10, Int(Rnd() * 200) + 50, Int(Rnd() * 200) + 50
    End With
    oPre.SaveAs sFileName ', ppSaveAsPresentation
    oPre.Close
    Set oPre = Nothing
    oPPT.Quit
    Set oPPT = Nothing
    
End If
End Sub

순환을 열번하면서 엑셀화일과 파워포인트화일을 랜덤으로 몇개씩
만들고 저장한다
그러면 아래의 그림과 같이 화일관리시트가 하나 만들어진다



그리고 버튼이 하나 만들어졌다
문제는 화일명을 선택하고 버튼을 크릭하였을때
해당 화일(엑셀이나 파워포인트)이 열리게 하는 것이다
뭐가..이런 쉬운 문제가 있지???
라고 하시면 오산!!
엑셀은 그냥 누구나 열수 있지만 파워포인트를 어떻게
열것이냐????
이 것이 문제다!!
죄다 하였던 이야기니까..죄다 열독하셨다면 문제가 없을 것이나
건성으로 보셨다면 이참에 다시 챙기시고..

엑셀의 열고자 하는 화일이 열려있는지 확인하는 것도 별로 문제가 없고 엑셀을 여는 것도 문제가 없으나..
엑셀에서 파워포인트가 열려있는지 닫혀있는지를 알려면
Dim oPPT As PowerPoint.Application

Set oPPT=GetObject(,"")
If Not oPPT Is Nothing Then
	....파워포인트가 이미 열려있는 상태다
	dim oPre As PowerPoint.Presentataion
	For Each oPre In oPPT.Presentations
		...찾고자 하는 화일이 열려있는지 확인
	Next
End If

와 같이 하여야 알아 낼수있다
위의 것이 요점이니 화일의 모듈을 보세요!!

***[LOG-IN]***

  • 01