Results 1 to 2 of 2
  1. #1
    Join Date
    Sep 2004

    Unanswered: Command Button & OLE

    I have one MS Word document in a OLE field (it's just one document and will always be one document). This document might have to be edited in the future. I would like to add a command button so that when clicked, it brings up the document to be edited. How?

  2. #2
    Join Date
    Nov 2003
    Try something like this:
    On Error Resume Next
    If Shell("WINWORD.EXE " & fGetShortName(Me.OLEFieldFileName), 1) = 0 Then 
    MsgBox"Can't Open File!"
    End If
    You may not need these functions which utilize API's from the Kernal32 library. Place the following into a code module:
    'The functions fGetShortName and fGetLongName will return
    'the appropriate Short or Long filename.
    Private Const MAX_PATH& = 260
    Private Const INVALID_HANDLE_VALUE = -1
    	dwLowDateTime As Long
    	dwHighDateTime As Long
    End Type
    Type WIN32_FIND_DATA ' 318 Bytes
    	dwFileAttributes As Long
    	ftCreationTime As FILETIME
    	ftLastAccessTime As FILETIME
    	ftLastWriteTime As FILETIME
    	nFileSizeHigh As Long
    	nFileSizeLow As Long
    	dwReserved¯ As Long
    	dwReserved1 As Long
    	cFileName As String * MAX_PATH
    	cAlternate As String * 14
    End Type
    Private Declare Function apiFindFirstFile Lib "kernel32" _
    	Alias "FindFirstFileA" _
    	(ByVal lpFileName As String, _
    	lpFindFileData As WIN32_FIND_DATA) _
    	As Long
    Private Declare Function apiFindClose Lib "kernel32" _
    	Alias "FindClose" _
    	(ByVal hFindFile As Long) _
    	As Long
    Private Declare Function apiGetShortPathName Lib "kernel32" _
    	Alias "GetShortPathNameA" _
    	(ByVal lpszLongPath As String, _
    	ByVal lpszShortPath As String, _
    	ByVal cchBuffer As Long) _
    	As Long
    Public Function fGetShortName(ByVal stLongPath As String) As String
    '[ opposite of fGetLongName() ]
    'Usage Examples:
    '?fGetShortName("D:\Internet Explorer 4.0 Setup\This folder is safe to delete.txt")
    	Dim stShortPath As String
    	Dim lngBuffer As Long, lngRet As Long
    	stShortPath = String$(MAX_PATH, 0)
    	lngBuffer = Len(stShortPath)
    	lngRet = apiGetShortPathName(stLongPath, stShortPath, lngBuffer)
    	fGetShortName = Left(stShortPath, lngRet)
    End Function
    Function fGetLongName(ByVal strFileName As String) As String
    'Usage Examples:
    'D:\Internet Explorer 4.0 Setup\This folder is safe to delete.txt
    'C:\Program Files\Microsoft Office\Office\Samples\Solutions.mdb
    'C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb
    	Dim lpFindFileData As WIN32_FIND_DATA
    	Dim strPath As String, lngRet As Long
    	Dim strFile As String, lngX As Long, lngY As Long
    	Dim strTmp As String
    	strTmp = ""
    	Do While Not lngRet = INVALID_HANDLE_VALUE
    		lngRet = apiFindFirstFile(strFileName, lpFindFileData)
    		strFile = Left$(lpFindFileData.cFileName, _
    					InStr(lpFindFileData.cFileName, _
    					vbNullChar) - 1)
    		If Len(strFileName) > 2 Then
    			strTmp = strFile & "\" & strTmp
    			strFileName = fParseDir(strFileName)
    			strTmp = strFileName & "\" & strTmp
    			Exit Do
    		End If
    	fGetLongName = Left$(strTmp, Len(strTmp) - 1)
    	lngY = apiFindClose(lngRet)
    End Function
    Private Function fParseDir(strInFile As String) As String
    Dim intLen As Long, boolFound As Boolean
    Dim i As Integer, f As String, strDir As String
    	intLen = Len(strInFile)
    	If intLen > 0 Then
    		boolFound = False
    		For i = intLen To 1 Step -1
    			If Mid$(strInFile, i, 1) = "\" Then
    				f = Mid$(strInFile, i + 1)
    				strDir = Left$(strInFile, i - 1)
    				boolFound = True
    				Exit For
    			End If
    		Next i
    		End If
    	If boolFound Then
    		fParseDir = strDir
    		fParseDir = strInFile
    	End If
    End Function

Posting Permissions

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