Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 208
  • Last Modified:

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
0
Thomas_Meyer
Asked:
Thomas_Meyer
  • 3
  • 2
1 Solution
 
GrahamSkanCommented:
There are several challenges here - accessing the control, appending to a log file, and finding the temporary filde path
0
 
GrahamSkanCommented:
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
 
GrahamSkanCommented:
OK, change the function to:

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

They both work in my tests.
0
 
Thomas_MeyerAuthor Commented:
Perfect work! Thanks
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now