Excel & VBA---Brain Training
엑셀문서와 파워포인트문서를 목록에서 열고 닫기
이런 문제가 있었다
질문하신분의 화일을 그대로 올릴수 없으니
문제 자체를 만들어 보자
아래 코드를 실행하면
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]***