View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Ed[_18_] Ed[_18_] is offline
external usenet poster
 
Posts: 118
Default Create toolbar with VB (notVBA)?

Thank you, Bob. I will play with this and holler if I have problems.

Ed

"Bob Phillips" wrote in message
...
Ed,

It doesn't really matter, before or after. Commandbars are part of Excel
application, that is why it is referenced vi the xlApp object (or objXL in
your case).

If you also notice I set the temporary property of the commandbar control,
so it won't hang around. You could also replicate that delete code that I
included at the start of the routine.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Ed" wrote in message
...
Thank you, Bob. (Boy, I'll be glad when *I* can "just knock up a bit of
code" like that!)

One question: I already have the code on a button that calls my Excel

file
(copied below). I assume that I would put this in the same module. But

I
notice you do this with the xlApp, and not with the specific file. So
should this go before I set a reference to the file and open it? I

don't
want the user to be stuck with a toolbar on their application after I'm
done!

Ed

Private Sub btnShowExcel_Click()

Dim objXL As Object
Dim objWkbk As Object
Dim strFile As String
Dim strFPath As String
Dim strShell As String
Dim nmbFPChr As Long

strFPath = App.Path
nmbFPChr = Len(strFPath)
nmbFPChr = (nmbFPChr - 8)
strFPath = Left(strFPath, nmbFPChr)
strFile = Dir(strFPath & "*.xls")
strShell = strFPath & strFile

Set objXL = CreateObject("Excel.Application")
Set objWkbk = objXL.Workbooks.Open(strShell)
Form1.Visible = False
objXL.Visible = True
Form3.Visible = True

End Sub

"Bob Phillips" wrote in message
...
Ed,

I just knocked up this bit of code and ran it okay. Admittedly, it was

in
VBA, but it uses automation so it will work just as well in VB

Sub myMenu()
Dim oCB As Object
Dim oCtl As Object 'CommandBarControl
Dim newMenu As Object 'CommandBarControl
Dim ctrlButton As Object 'CommandBarControl
Dim xlApp As Object
Dim sh As Object

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True

On Error Resume Next
xlApp.CommandBars("Worksheet Menu
Bar").Controls("Tools").Controls("Bars2004").Delet e
On Error GoTo 0

Set oCB = xlApp.CommandBars("Worksheet Menu Bar")
Set oCtl = oCB.Controls("Tools")

Set newMenu = oCtl.Controls.Add(Type:=msoControlPopup,

temporary:=True)
With newMenu
.Caption = "myMenu"
Set ctrlButton = .Controls.Add(Type:=msoControlButton, ID:=1)
With ctrlButton
.Caption = "mySubMenu"
.Style = msoButtonCaption
.OnAction = "myMacro"
End With
End With

End Sub

This should give you a start.

You don't need to use late binding, you could just as easily set a

reference
to Excel, and use early binding, declaring the objects explicitly.

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)

"Ed" wrote in message
...
Due to some conflicts (L-O-N-G story!), I am now trying to use a

Visual
Basic app to open an Excel workbook across a network. The workbook
originally had several search functions coded into it; these now

must
go
into the VB app. The difficulty is allowing my users to access

them.
I
can
either create a floating toolbar with a VB form, or create a custom
toolbar
in Excel when the workbook is opened.

I've found several examples on creating the toolbar in Excel with

VBA,
and
I've been told I can manipulate the Excel objects and methods by VB.

So -
theoretically, it should be simple to create this toolbar on the fly

when
the workbook opens on the user's system, and delete it when they are

done,
right?

Am I jumping into deep waters without my floaties?

Ed