+ Reply to Thread
Results 1 to 7 of 7

Declare API call to Windows GetFile

  1. #1
    Andibevan
    Guest

    Declare API call to Windows GetFile

    Hi All,

    Can you use the Shell32.dll to generate a box to select a file?

    I need to create a select file box in powerpoint (powerpoint does not offer
    the same functioanlity as excel) and am struggling to find any relevent
    resources either on the web or in the Powerpoint forum - thought you guys
    may have a better idea?

    Ta

    Andy



  2. #2
    K Dales
    Guest

    RE: Declare API call to Windows GetFile

    You can add a reference to the Excel object library in your Powerpoint VBA
    project, then you can use all the Excel dialogs, including the FindFile, as
    well as the FileFind property of Excel.

    "Andibevan" wrote:

    > Hi All,
    >
    > Can you use the Shell32.dll to generate a box to select a file?
    >
    > I need to create a select file box in powerpoint (powerpoint does not offer
    > the same functioanlity as excel) and am struggling to find any relevent
    > resources either on the web or in the Powerpoint forum - thought you guys
    > may have a better idea?
    >
    > Ta
    >
    > Andy
    >
    >
    >


  3. #3
    Andibevan
    Guest

    Re: Declare API call to Windows GetFile

    That's a good start but I am having trouble. I have set a reference to the
    Excel object library but can't get the following to work - any ideas?

    FName = Application.GetOpenFilenName(FileFilter:"Excel Files (*.xls),
    *.xls", MultiSelect:=True)

    Here is my code - it says "Method or Data Member not Found"



    "K Dales" <[email protected]> wrote in message
    news:[email protected]...
    You can add a reference to the Excel object library in your Powerpoint VBA
    project, then you can use all the Excel dialogs, including the FindFile, as
    well as the FileFind property of Excel.

    "Andibevan" wrote:

    > Hi All,
    >
    > Can you use the Shell32.dll to generate a box to select a file?
    >
    > I need to create a select file box in powerpoint (powerpoint does not

    offer
    > the same functioanlity as excel) and am struggling to find any relevent
    > resources either on the web or in the Powerpoint forum - thought you guys
    > may have a better idea?
    >
    > Ta
    >
    > Andy
    >
    >
    >




  4. #4
    Andibevan
    Guest

    Re: Declare API call to Windows GetFile

    Have now got it working - Thanks

    "K Dales" <[email protected]> wrote in message
    news:[email protected]...
    You can add a reference to the Excel object library in your Powerpoint VBA
    project, then you can use all the Excel dialogs, including the FindFile, as
    well as the FileFind property of Excel.

    "Andibevan" wrote:

    > Hi All,
    >
    > Can you use the Shell32.dll to generate a box to select a file?
    >
    > I need to create a select file box in powerpoint (powerpoint does not

    offer
    > the same functioanlity as excel) and am struggling to find any relevent
    > resources either on the web or in the Powerpoint forum - thought you guys
    > may have a better idea?
    >
    > Ta
    >
    > Andy
    >
    >
    >




  5. #5
    Bob Phillips
    Guest

    Re: Declare API call to Windows GetFile

    Andi,

    You can use an API. GetOpenFilename.

    I use a version encapsulated in a class module, attached below. To use it,
    add this code to a class module, call it clsGetOpenFileName, and invoke it
    is the following way (which opens an Excel doc in PP)


    Dim cFileOpen As clsGetOpenFileName


    Set cFileOpen = New clsGetOpenFileName


    With cFileOpen
    .FileName = "Ex*.xls"
    .FileType = "Excel Files"
    .DialogTitle = "Class GetOpenFileName Demo"
    .MultiFile = "N"
    .SelectFile


    If .SelectedFiles.Count > 0 Then
    MsgBox (.SelectedFiles(1))
    End If
    End With


    Set cFileOpen = Nothing


    >>>>>>>>>>>>>Class code




    Option Explicit

    '-----------------------------*------------------------------*--------------
    --
    ' Win32 API Declarations
    '-----------------------------*------------------------------*--------------
    --
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
    Alias "GetOpenFileNameA" _
    (pOpenfilename As OPENFILENAME) As Long


    Private Declare Function GetSaveFileName Lib "comdlg32.dll" _
    Alias "GetSaveFileNameA" _
    (pOpenfilename As OPENFILENAME) As Long


    Private Declare Function GetShortPathName Lib "kernel32" _
    Alias "GetShortPathNameA" _
    (ByVal lpszLongPath As String, _
    ByVal lpszShortPath As String, _
    ByVal cchBuffer As Long) As Long


    Private Type OPENFILENAME
    nStructSize As Long
    hWndOwner As Long
    hInstance As Long
    sFilter As String
    sCustomFilter As String
    nMaxCustFilter As Long
    nFilterIndex As Long
    sFile As String
    nMaxFile As Long
    sFileTitle As String
    nMaxTitle As Long
    sInitialDir As String
    sDialogTitle As String
    flags As Long
    nFileOffset As Integer
    nFileExtension As Integer
    sDefFileExt As String
    nCustData As Long
    fnHook As Long
    sTemplateName As String
    End Type


    '-----------------------------*------------------------------*--------------
    --
    ' Private Variables
    '-----------------------------*------------------------------*--------------
    --
    Private OFN As OPENFILENAME


    Private sFileType As String 'Type of file narrative
    Private sFileName As String 'Filename string to restrict list
    Private sReadOnly As String 'Y/N flag
    Private sMultiFile As String 'Allow selection of multiple files
    Private sTitle As String 'Title in file dialog box


    '-----------------------------*------------------------------*--------------
    --
    ' Private Constants
    '-----------------------------*------------------------------*--------------
    --
    Private Const OFN_ALLOWMULTISELECT As Long = &H200
    Private Const OFN_CREATEPROMPT As Long = &H2000
    Private Const OFN_ENABLEHOOK As Long = &H20
    Private Const OFN_ENABLETEMPLATE As Long = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE As Long = &H80
    Private Const OFN_EXPLORER As Long = &H80000
    Private Const OFN_EXTENSIONDIFFERENT As Long = &H400
    Private Const OFN_FILEMUSTEXIST As Long = &H1000
    Private Const OFN_HIDEREADONLY As Long = &H4
    Private Const OFN_LONGNAMES As Long = &H200000
    Private Const OFN_NOCHANGEDIR As Long = &H8
    Private Const OFN_NODEREFERENCELINKS As Long = &H100000
    Private Const OFN_NOLONGNAMES As Long = &H40000
    Private Const OFN_NONETWORKBUTTON As Long = &H20000
    Private Const OFN_NOREADONLYRETURN As Long = &H8000& '*see comments
    Private Const OFN_NOTESTFILECREATE As Long = &H10000
    Private Const OFN_NOVALIDATE As Long = &H100
    Private Const OFN_OVERWRITEPROMPT As Long = &H2
    Private Const OFN_PATHMUSTEXIST As Long = &H800
    Private Const OFN_READONLY As Long = &H1
    Private Const OFN_SHAREAWARE As Long = &H4000
    Private Const OFN_SHAREFALLTHROUGH As Long = 2
    Private Const OFN_SHAREWARN As Long = 0
    Private Const OFN_SHARENOWARN As Long = 1
    Private Const OFN_SHOWHELP As Long = &H10
    Private Const OFS_MAXPATHNAME As Long = 260


    'OFS_FILE_OPEN_FLAGS and OFS_FILE_SAVE_FLAGS below are mine to save long
    'statements; they're not a standard Win32 type.
    Private Const OFS_FILE_OPEN_FLAGS = OFN_EXPLORER Or _
    OFN_LONGNAMES Or _
    OFN_CREATEPROMPT Or _
    OFN_NODEREFERENCELINKS

    Private Const OFS_FILE_SAVE_FLAGS = OFN_EXPLORER Or _
    OFN_LONGNAMES Or _
    OFN_OVERWRITEPROMPT Or _
    OFN_HIDEREADONLY


    '-----------------------------*------------------------------*--
    ' Class Properties
    '-----------------------------*------------------------------*--
    Public SelectedFiles As New Collection

    Public Property Let FileType(FileType As String)
    sFileType = FileType
    End Property

    Public Property Let FileName(FileName As String)
    sFileName = FileName
    End Property

    Public Property Let MultiFile(MultiFile As String)
    sMultiFile = UCase(MultiFile)
    End Property

    Public Property Let DialogTitle(Title As String)
    sTitle = Title
    End Property

    Public Property Get ReadOnly()
    ReadOnly = sReadOnly
    End Property


    '-----------------------------*------------------------------*--
    ' Class Methods
    '-----------------------------*------------------------------*--
    Public Function SelectFile() As Long
    '-----------------------------*------------------------------*--
    Dim i
    Dim sFilters As String
    Dim sBuffer As String
    Dim sLongname As String
    Dim sShortname As String

    If ValidInput Then
    'create a string of filters for the dialog
    sFilters = sFileType & vbNullChar & vbNullChar

    With OFN

    .nStructSize = Len(OFN) 'Size of the OFN structure
    .sFilter = sFilters 'Filters for dropdown combo
    .nFilterIndex = 1 'Index to the initial filter

    'Default filename, plus additional padding for user 's final
    ' selection(s). Must be double-null terminated
    .sFile = sFileName & Space$(1024) & vbNullChar & vbNullChar

    .nMaxFile = Len(.sFile) 'the size of the buffer
    'Default if file has no extension
    .sDefFileExt = sFileName & vbNullChar & vbNullChar
    'Make space for file title if single selection made,
    ' double-null terminated, and its size
    .sFileTitle = vbNullChar & Space$(512) & _
    vbNullChar & vbNullChar
    .nMaxTitle = Len(OFN.sFileTitle)
    'Starting folder, double-null terminated
    .sInitialDir = ActivePresentation.Path & vbNullChar

    .sDialogTitle = sTitle 'the dialog title string

    'Default open flags and multiselect
    .flags = OFS_FILE_OPEN_FLAGS Or _
    OFN_NOCHANGEDIR

    If sMultiFile = "Y" Then .flags = .flags Or _
    OFN_ALLOWMULTISELECT

    End With

    SelectFile = GetOpenFileName(OFN)
    If SelectFile Then
    'Remove trailing pair of terminating nulls and
    ' trim returned file string
    sBuffer = Trim$(Left$(OFN.sFile, Len(OFN.sFile) - 2))
    'If multiple- select, first member is the
    path,remaining
    ' members are the files under that path
    Do While Len(sBuffer) > 3
    SelectedFiles.Add StripDelimitedItem(sBuffer,
    vbNullChar)
    Loop

    sReadOnly = Abs((OFN.flags And OFN_READONLY))

    End If
    End If

    End Function


    Private Sub Class_Initialize()
    sTitle = "GetOpenFileName"
    End Sub


    Private Sub Class_Terminate()
    Set SelectedFiles = Nothing
    End Sub


    '-----------------------------*------------------------------*------
    Private Function ValidInput() As Boolean
    '-----------------------------*------------------------------*------
    Dim i As Integer

    ValidInput = True

    i = 1
    If IsEmpty(sFileName) Then
    sFileName = " - a file description must be supplied"
    i = i + 1
    ValidInput = False
    End If

    If IsEmpty(sFileType) Then
    sFileType = " - a file extension must be supplied"
    i = i + 1
    ValidInput = False
    End If

    If sMultiFile <> "Y" And sMultiFile <> "N" Then
    sMultiFile = "Multiple files must be Y or N"
    i = i + 1
    ValidInput = False
    End If

    End Function


    '-----------------------------*------------------------------*------
    Private Function StripDelimitedItem(startStrg As String, _
    delimiter As String) As String
    '-----------------------------*------------------------------*------
    'take string separated by nulls, split off 1 item, and shorten string
    ' so the next item is ready for removal.
    Dim pos As Long
    Dim item As String

    pos = InStr(1, startStrg, delimiter)

    If pos Then
    StripDelimitedItem = Mid$(startStrg, 1, pos)
    startStrg = Mid$(startStrg, pos + 1, Len(startStrg))
    End If

    End Function


    '-----------------------------*------------------------------*------
    Private Function TrimNull(item As String) As String
    '-----------------------------*------------------------------*------
    Dim pos As Integer

    pos = InStr(item, Chr$(0))
    If pos Then
    TrimNull = Left$(item, pos - 1)
    Else
    TrimNull = item
    End If

    End Function






    --

    HTH

    RP
    (remove nothere from the email address if mailing direct)


    "K Dales" <[email protected]> wrote in message
    news:[email protected]...
    > You can add a reference to the Excel object library in your Powerpoint VBA
    > project, then you can use all the Excel dialogs, including the FindFile,

    as
    > well as the FileFind property of Excel.
    >
    > "Andibevan" wrote:
    >
    > > Hi All,
    > >
    > > Can you use the Shell32.dll to generate a box to select a file?
    > >
    > > I need to create a select file box in powerpoint (powerpoint does not

    offer
    > > the same functioanlity as excel) and am struggling to find any relevent
    > > resources either on the web or in the Powerpoint forum - thought you

    guys
    > > may have a better idea?
    > >
    > > Ta
    > >
    > > Andy
    > >
    > >
    > >




  6. #6
    Tom Ogilvy
    Guest

    Re: Declare API call to Windows GetFile

    http://support.microsoft.com/default...b;en-us;161286
    How To Use a Common Dialog File Open Dialog with Win32 API

    --
    Regards,
    Tom Ogilvy



    "Andibevan" <[email protected]> wrote in message
    news:%[email protected]...
    > Hi All,
    >
    > Can you use the Shell32.dll to generate a box to select a file?
    >
    > I need to create a select file box in powerpoint (powerpoint does not

    offer
    > the same functioanlity as excel) and am struggling to find any relevent
    > resources either on the web or in the Powerpoint forum - thought you guys
    > may have a better idea?
    >
    > Ta
    >
    > Andy
    >
    >




  7. #7
    Andibevan
    Guest

    Re: Declare API call to Windows GetFile

    Bob - Thanks for that code - I will have a play

    Tom - Thanks for the MSM link - I must have read every other piece of text
    to do with the getopenfile api but missed that one somehow (the ones I found
    were not that useful)

    "Tom Ogilvy" <[email protected]> wrote in message
    news:ef9%[email protected]...
    http://support.microsoft.com/default...b;en-us;161286
    How To Use a Common Dialog File Open Dialog with Win32 API

    --
    Regards,
    Tom Ogilvy



    "Andibevan" <[email protected]> wrote in message
    news:%[email protected]...
    > Hi All,
    >
    > Can you use the Shell32.dll to generate a box to select a file?
    >
    > I need to create a select file box in powerpoint (powerpoint does not

    offer
    > the same functioanlity as excel) and am struggling to find any relevent
    > resources either on the web or in the Powerpoint forum - thought you guys
    > may have a better idea?
    >
    > Ta
    >
    > Andy
    >
    >





+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1