As the macro that creates a text file with value?

Hi,

can you help me with a macro that creates a text file and writes the value?
Macro to find and write the value control label1 (located on the first slide) into a text file %TEMP%\test.log
If the folder %TEMP% this .log file is located, must be automatically replaced.
Example in the attached presentation.
Thanks in advance for your help. TEST.ppt
Thomas_MeyerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

 
GrahamSkanRetiredCommented:
There are several challenges here - accessing the control, appending to a log file, and finding the temporary filde path
0
 
GrahamSkanRetiredCommented:
This is the code:
Option Explicit

Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long


Sub WriteToFile()
    Dim sl As Slide
    Dim sh As Shape
    Dim ctl As Control
    
    Set sl = ActivePresentation.Slides(1)
    Set sh = sl.Shapes(1)
    For Each sh In sl.Shapes
        If sh.Type = msoOLEControlObject Then
            If sh.OLEFormat.Object.Name = "Label1" Then
                WriteLog sh.OLEFormat.Object.Caption
            End If
        End If
    Next sh
End Sub

Sub WriteLog(ByVal Text As String)
    Dim f As Integer
    Dim strFileName As String
    strFileName = "\test.log"
    'Text = Format$(Now, "HH:nn:ss") & " " & Text
    Debug.Print Text
    f = FreeFile
    Open strTempFolder & strFileName For Append As #f
        Print #f, Text
    Close #f
End Sub

Public Function strTempFolder() As String
    Dim strDir As String
    Dim r As Long
    
    strDir = Space$(512)
    r = GetTempPath(Len(strDir), strDir)
    If r > 0 Then
        strTempFolder = Left(strDir, r - 1)
    Else
        strTempFolder = ""
    End If
End Function

Open in new window

0
 
Thomas_MeyerAuthor Commented:
I do not know what's wrong, but I do not create the file %TEMP%\test.log.
Otherwise the %TEMP% I like: Environ("TEMP")
0
 
GrahamSkanRetiredCommented:
OK, change the function to:

Public Function strTempFolder() As String
    strTempFolder = Environ("TEMP")
End Function

They both work in my tests.
0

Experts Exchange Solution brought to you by ConnectWise

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
 
Thomas_MeyerAuthor Commented:
Perfect work! Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.