Solved

VBA:How to activate a object in OLE OBJECT field?

Posted on 1998-08-27
7
1,133 Views
Last Modified: 2008-02-01
I used OLE Object field to stored document files (eg. *.DOC, *.WPD, *.PDF, *.BMP), how can I activate the object with its associate in a selected record (just like double click the field in table view)?

e.g.
Table.findfist "ID = " & ObjID
Table("Obj Field").activate       <=== Any method like that?

(Or, any other way to do that like this??)

Thanks.
0
Comment
Question by:st
7 Comments
 
LVL 5

Expert Comment

by:kulikuli
ID: 1960437
Use a bound object frame or an image control to display it.
0
 
LVL 5

Expert Comment

by:kulikuli
ID: 1960438
To edit/activate the object:
OLE1.Class = "Excel.Sheet" 'Excell example
OLE1.Action = acOLEActiva
0
 
LVL 1

Author Comment

by:st
ID: 1960439
Kulikuli, is that the only way to do that? If yes, how to activate that bound object/control in coding?
(Furthermore, how can I create an invisible bound object/control tempoary by coding, and activate the OLE obj? Worth more 50 points for this answer.)

Thanks.
0
Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

 
LVL 3

Expert Comment

by:kaldrich
ID: 1960440
I put the information about the document and the code to open it into a field and did this:

Function Get_Document ()

 
'*********************************************
'*                                           *
'*  Function Get_Document ()                 *
'*                                           *
'*  Opens a specific document based on       *
'*  the user selecting a particular record   *
'*  to view.                                 *
'*                                           *
'*  Written 7/24/98 by K. Aldrich            *
'*                                           *
'*********************************************



 Dim Retval As Integer

 Retval = Shell(Forms![Frm - Display Functions]![File to Run], 3)

End Function

In this case,

Forms![Frm - Display Functions]![File to Run] = "C:\MSOFFICE\WINWORD S:\DOCS\DOCIWANT.DOC"

or something like that.


Hope this helps.
0
 
LVL 1

Author Comment

by:st
ID: 1960441
This get_document function can't open OLE obj using associate (I need without specify the application to open)
0
 
LVL 8

Expert Comment

by:Helicopter
ID: 1960442
Have you tried shellexecute instead?

This example reads a filename from the common dialog and opens the app. I know your set up is a bit different but you might be able to get it to work. If so I'll repost as an answer.

     Put this in a module:

       Declare Function ShellExecute Lib "shell32.dll" Alias _
       "ShellExecuteA" (ByVal Hwnd As Long, ByVal lpOperation _
       As String, ByVal lpFile As String, ByVal lpParameters _
       As String, ByVal lpDirectory As String, ByVal nShowCmd _
       As Long) As Long

       Global Const SW_SHOWNORMAL = 1


       And this in a form:

       Public Function StartDoc(DocName As String)
       On Error GoTo StartDoc_Error
       StartDoc = ShellExecute(Application.hWndAccessApp, "Open", DocName, "", "C:\", 1)
       Exit Function

       StartDoc_Error:
                MsgBox "Error: " & Err & " " & Error
                Exit Function
       End Function

       And call it with:

       Private Sub Command3_Click()
       Dim X
       Dim fname As String
       cd.ShowOpen  'cd is the name of the commondialog control
       fname = cd.FileName
       X = StartDoc(fname)

       End Sub

   Or test it in immediate with

   ShellExecute(Application.hWndAccessApp, "Open", "yourfilename.icx", "", "C:\", 1)


0
 
LVL 5

Accepted Solution

by:
kulikuli earned 50 total points
ID: 1960443
I see my last sentence got cut off. It should be:
OLE1.Action = acOLEActivate

And yes, I think this is the BEST way to do it. You can control what will happen to the OLE object upon user interaction.
You can modify the Action property in run-time. That is, you can specify on which moment the user is able to edit or just view the OLE object.

Creating an OLE control on a form is only available in design view. Use the CreateControl method.
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I see at least one EE question a week that pertains to using temporary tables in MS Access.  But surprisingly, I was unable to find a single article devoted solely to this topic. I don’t intend to describe all of the uses of temporary tables in t…
It’s been over a month into 2017, and there is already a sophisticated Gmail phishing email making it rounds. New techniques and tactics, have given hackers a way to authentically impersonate your contacts.How it Works The attack works by targeti…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

813 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now