469,903 Members | 2,312 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,903 developers. It's quick & easy.

Does anyone understand toolbars?

So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried to
copy it so that I could modify the copy and use it with another form. With
no direct way to copy it, I made a copy of the MDB, renamed the toolbar, and
then imported it back into the original MDB as a copy of the original (see
"Copying a custom menu bar" thread here). Everything seemed fine until I
tried to modify the copy. When I added or removed items from the menu bar,
the original was modified as well! They were one toolbar with two instances
in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?
Nov 10 '07 #1
15 1718
Neil wrote:
So, I tried to copy a toolbar. I have a custom menu bar for a form.
Tried to copy it so that I could modify the copy and use it with
another form. With no direct way to copy it, I made a copy of the
MDB, renamed the toolbar, and then imported it back into the original
MDB as a copy of the original (see "Copying a custom menu bar" thread
here). Everything seemed fine until I tried to modify the copy. When
I added or removed items from the menu bar, the original was modified
as well! They were one toolbar with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy
of a toolbar so that I can modify it and use a slightly different
version with another form?
I have seen that exact behavior. I just gave up on copying command bars and
just build each one separately. I have not seen the behavior copying an item on
a command bar to the same command bar and then changing something about the
copy, but when copying across command bars it definitely does what you describe
(although not 100% of the time).

--
Rick Brandt, Microsoft Access MVP
Email (as appropriate) to...
RBrandt at Hunter dot com
Nov 10 '07 #2
Interesting was that I could change the *name* of the top-level item in the
command bar copy without the name changing in the original; but if I added
or removed items under the top-level, it was reflected on both command bars.

I thought I was going to be real clever and try something else. Since it's
the last two top-level items that I need to modify, I went into the command
bar copy, created two new top-level items, and then ctrl-dragged the items
from the originals to the copies of the top-level items. This way, I didn't
delete items within the menu, but just created two new menus on the bar. The
two new menus didn't appear in the original. I then deleted the two menus
that I had copied from the menu bar, and I thought I was home-free: the
original had the two menus, and the copy had two brand new menus. Only one
problem: the original menu bar with the two menus I had copied had no items
under them! Sigh.

So I give up too. Good to know I'm not just missing something here.

Thanks,

Neil
"Rick Brandt" <ri*********@hotmail.comwrote in message
news:ZC******************@newssvr11.news.prodigy.n et...
Neil wrote:
>So, I tried to copy a toolbar. I have a custom menu bar for a form.
Tried to copy it so that I could modify the copy and use it with
another form. With no direct way to copy it, I made a copy of the
MDB, renamed the toolbar, and then imported it back into the original
MDB as a copy of the original (see "Copying a custom menu bar" thread
here). Everything seemed fine until I tried to modify the copy. When
I added or removed items from the menu bar, the original was modified
as well! They were one toolbar with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy
of a toolbar so that I can modify it and use a slightly different
version with another form?

I have seen that exact behavior. I just gave up on copying command bars
and just build each one separately. I have not seen the behavior copying
an item on a command bar to the same command bar and then changing
something about the copy, but when copying across command bars it
definitely does what you describe (although not 100% of the time).

--
Rick Brandt, Microsoft Access MVP
Email (as appropriate) to...
RBrandt at Hunter dot com

Nov 10 '07 #3
Can you not make a copy of the database. Delete all the unused objects in
the copy and use that as a basis for your new database? You should be able
to rename and alter the copy in that manner. Doing whatever you wish to the
"new" toolbar, then import the objects from the old database, including the
old toolbar.
--
Arvin Meyer, MCP, MVP
http://www.datastrat.com
http://www.mvps.org/access
http://www.accessmvp.com

"Neil" <no****@nospam.netwrote in message
news:fr*****************@newssvr25.news.prodigy.ne t...
So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried
to copy it so that I could modify the copy and use it with another form.
With no direct way to copy it, I made a copy of the MDB, renamed the
toolbar, and then imported it back into the original MDB as a copy of the
original (see "Copying a custom menu bar" thread here). Everything seemed
fine until I tried to modify the copy. When I added or removed items from
the menu bar, the original was modified as well! They were one toolbar
with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?

Nov 10 '07 #4
On Nov 10, 7:25 am, "Neil" <nos...@nospam.netwrote:
So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried to
copy it so that I could modify the copy and use it with another form. With
no direct way to copy it, I made a copy of the MDB, renamed the toolbar, and
then imported it back into the original MDB as a copy of the original (see
"Copying a custom menu bar" thread here). Everything seemed fine until I
tried to modify the copy. When I added or removed items from the menu bar,
the original was modified as well! They were one toolbar with two instances
in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?
A Hack:

I create a command bar "Employee Attendance Entries".
I store a copy in CommandBarsHolder.mdb
To create a copy I run a hack:

Public Sub AirCodeInHackersVille()
With Application
.CommandBars("Employee Attendance Entries").Name = "Whatever"
With WizHook
.Key = 51488399
.WizCopyCmdbars "CommandBarsHolder.mdb"
End With
.CommandBars("Employee Attendance Entries").Name = "Employee
Attendance Entries" & Format(Now(), "yyyymmddhhnnss")
.CommandBars("Whatever").Name = "Employee Attendance Entries"
End With
End Sub

Now I have the orignal plus a copy named Employee Attendance Entries
plus a date-time string.
Will changes in one result in changes to another? I don't know but I
doubt it.
Is the code polished? Nope! Clearly it needs a bunch of error-handling
thing-mes.

Is this any use to anyone? I doubt it, but, of course, every tiny
thing we learn may come in handy at some crucial time down the road
and it's fun messing!
The home db in this case is 2007; the bar holder is 1997. That's quite
a jump.

Nov 10 '07 #5
No, that's exactly what I did -- except I didn't delete unused objects. I
simply made a copy of the MDB, renamed the toolbar, and then imported all
toolbars. Since the other toolbars had the same name as their original
counterparts, they didn't import. The only thing that imported was the one
that I renamed in the copy.

So, I thought everything was fine, as I had two toolbars with two different
names -- one for one form, and one for another form. The problem arose when
I started modifying the copy. When I modified the copy that I had imported,
the original was modified as well.

Two toolbars in the database, two different names; yet somehow Access sees
them as the same toolbar.
"Arvin Meyer [MVP]" <a@m.comwrote in message
news:uF**************@TK2MSFTNGP05.phx.gbl...
Can you not make a copy of the database. Delete all the unused objects in
the copy and use that as a basis for your new database? You should be able
to rename and alter the copy in that manner. Doing whatever you wish to
the "new" toolbar, then import the objects from the old database,
including the old toolbar.
--
Arvin Meyer, MCP, MVP
http://www.datastrat.com
http://www.mvps.org/access
http://www.accessmvp.com

"Neil" <no****@nospam.netwrote in message
news:fr*****************@newssvr25.news.prodigy.ne t...
>So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried
to copy it so that I could modify the copy and use it with another form.
With no direct way to copy it, I made a copy of the MDB, renamed the
toolbar, and then imported it back into the original MDB as a copy of the
original (see "Copying a custom menu bar" thread here). Everything seemed
fine until I tried to modify the copy. When I added or removed items from
the menu bar, the original was modified as well! They were one toolbar
with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?


Nov 10 '07 #6
On Sat, 10 Nov 2007 22:20:24 GMT, "Neil" <no****@nospam.netwrote:

Rather than making a copy of your database I would try creating a new blank
database and import only the toolbars from your database and no other objects.
So you now have a database containing nothing but toolbars. Delete the toolbars
you don't want, rename your target TB. Edit the TB as required and then import
it back to your database.

This might break whatever link is syncing the toolbars in the background. Don't
know if it will work but it would be worth a try.
>No, that's exactly what I did -- except I didn't delete unused objects. I
simply made a copy of the MDB, renamed the toolbar, and then imported all
toolbars. Since the other toolbars had the same name as their original
counterparts, they didn't import. The only thing that imported was the one
that I renamed in the copy.

So, I thought everything was fine, as I had two toolbars with two different
names -- one for one form, and one for another form. The problem arose when
I started modifying the copy. When I modified the copy that I had imported,
the original was modified as well.

Two toolbars in the database, two different names; yet somehow Access sees
them as the same toolbar.
"Arvin Meyer [MVP]" <a@m.comwrote in message
news:uF**************@TK2MSFTNGP05.phx.gbl...
>Can you not make a copy of the database. Delete all the unused objects in
the copy and use that as a basis for your new database? You should be able
to rename and alter the copy in that manner. Doing whatever you wish to
the "new" toolbar, then import the objects from the old database,
including the old toolbar.
--
Arvin Meyer, MCP, MVP
http://www.datastrat.com
http://www.mvps.org/access
http://www.accessmvp.com

"Neil" <no****@nospam.netwrote in message
news:fr*****************@newssvr25.news.prodigy.n et...
>>So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried
to copy it so that I could modify the copy and use it with another form.
With no direct way to copy it, I made a copy of the MDB, renamed the
toolbar, and then imported it back into the original MDB as a copy of the
original (see "Copying a custom menu bar" thread here). Everything seemed
fine until I tried to modify the copy. When I added or removed items from
the menu bar, the original was modified as well! They were one toolbar
with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?

Wayne Gillespie
Gosford NSW Australia
Nov 11 '07 #7
Given the number of questions about toolbars that we see here, there clearly
are quite a number of people who do NOT understand them. But you see to have
found a couple of "anyones" who certainly DO understand Toolbars.

Larry Linson
Nov 11 '07 #8
Indeed.

"Larry Linson" <bo*****@localhost.notwrote in message
news:4WKZi.204$RR1.146@trnddc02...
Given the number of questions about toolbars that we see here, there
clearly are quite a number of people who do NOT understand them. But you
see to have found a couple of "anyones" who certainly DO understand
Toolbars.

Larry Linson


Nov 12 '07 #9
Hi, Lyle. Thanks for this!

I created these objects below with the same names you used in your code, and
I ran your code. On the line:

..WizCopyCmdbars "CommandBarsHolder.mdb"

I get the error: "Object doesn't support this property or method."

Any ideas?

Thanks!

Neil
"lyle" <ly************@gmail.comwrote in message
news:11**********************@22g2000hsm.googlegro ups.com...
On Nov 10, 7:25 am, "Neil" <nos...@nospam.netwrote:
>So, I tried to copy a toolbar. I have a custom menu bar for a form. Tried
to
copy it so that I could modify the copy and use it with another form.
With
no direct way to copy it, I made a copy of the MDB, renamed the toolbar,
and
then imported it back into the original MDB as a copy of the original
(see
"Copying a custom menu bar" thread here). Everything seemed fine until I
tried to modify the copy. When I added or removed items from the menu
bar,
the original was modified as well! They were one toolbar with two
instances
in the db.

So I'm back to where I started. Anyone know of a way to make a copy of a
toolbar so that I can modify it and use a slightly different version with
another form?

A Hack:

I create a command bar "Employee Attendance Entries".
I store a copy in CommandBarsHolder.mdb
To create a copy I run a hack:

Public Sub AirCodeInHackersVille()
With Application
.CommandBars("Employee Attendance Entries").Name = "Whatever"
With WizHook
.Key = 51488399
.WizCopyCmdbars "CommandBarsHolder.mdb"
End With
.CommandBars("Employee Attendance Entries").Name = "Employee
Attendance Entries" & Format(Now(), "yyyymmddhhnnss")
.CommandBars("Whatever").Name = "Employee Attendance Entries"
End With
End Sub

Now I have the orignal plus a copy named Employee Attendance Entries
plus a date-time string.
Will changes in one result in changes to another? I don't know but I
doubt it.
Is the code polished? Nope! Clearly it needs a bunch of error-handling
thing-mes.

Is this any use to anyone? I doubt it, but, of course, every tiny
thing we learn may come in handy at some crucial time down the road
and it's fun messing!
The home db in this case is 2007; the bar holder is 1997. That's quite
a jump.

Nov 12 '07 #10
"Neil" <no****@nospam.netwrote in
news:gH*******************@newssvr29.news.prodigy. net:
.WizCopyCmdbars "CommandBarsHolder.mdb"

I get the error: "Object doesn't support this property or method."
You're using Access 2000, I think.

--
lyle fairfield
Nov 12 '07 #11
That's a good idea. I think I'll try that.

"Wayne Gillespie" <be*****@NOhotmailSPAM.com.auwrote in message
news:v7********************************@4ax.com...
On Sat, 10 Nov 2007 22:20:24 GMT, "Neil" <no****@nospam.netwrote:

Rather than making a copy of your database I would try creating a new
blank
database and import only the toolbars from your database and no other
objects.
So you now have a database containing nothing but toolbars. Delete the
toolbars
you don't want, rename your target TB. Edit the TB as required and then
import
it back to your database.

This might break whatever link is syncing the toolbars in the background.
Don't
know if it will work but it would be worth a try.
>>No, that's exactly what I did -- except I didn't delete unused objects. I
simply made a copy of the MDB, renamed the toolbar, and then imported all
toolbars. Since the other toolbars had the same name as their original
counterparts, they didn't import. The only thing that imported was the one
that I renamed in the copy.

So, I thought everything was fine, as I had two toolbars with two
different
names -- one for one form, and one for another form. The problem arose
when
I started modifying the copy. When I modified the copy that I had
imported,
the original was modified as well.

Two toolbars in the database, two different names; yet somehow Access sees
them as the same toolbar.
"Arvin Meyer [MVP]" <a@m.comwrote in message
news:uF**************@TK2MSFTNGP05.phx.gbl...
>>Can you not make a copy of the database. Delete all the unused objects
in
the copy and use that as a basis for your new database? You should be
able
to rename and alter the copy in that manner. Doing whatever you wish to
the "new" toolbar, then import the objects from the old database,
including the old toolbar.
--
Arvin Meyer, MCP, MVP
http://www.datastrat.com
http://www.mvps.org/access
http://www.accessmvp.com

"Neil" <no****@nospam.netwrote in message
news:fr*****************@newssvr25.news.prodigy. net...
So, I tried to copy a toolbar. I have a custom menu bar for a form.
Tried
to copy it so that I could modify the copy and use it with another
form.
With no direct way to copy it, I made a copy of the MDB, renamed the
toolbar, and then imported it back into the original MDB as a copy of
the
original (see "Copying a custom menu bar" thread here). Everything
seemed
fine until I tried to modify the copy. When I added or removed items
from
the menu bar, the original was modified as well! They were one toolbar
with two instances in the db.

So I'm back to where I started. Anyone know of a way to make a copy of
a
toolbar so that I can modify it and use a slightly different version
with
another form?

Wayne Gillespie
Gosford NSW Australia

Nov 12 '07 #12
Correct. Will be upgrading to 2002 soon.

"lyle fairfield" <ly******@yahoo.cawrote in message
news:4h******************@read2.cgocable.net...
"Neil" <no****@nospam.netwrote in
news:gH*******************@newssvr29.news.prodigy. net:
>.WizCopyCmdbars "CommandBarsHolder.mdb"

I get the error: "Object doesn't support this property or method."

You're using Access 2000, I think.

--
lyle fairfield

Nov 12 '07 #13

"Wayne Gillespie" <be*****@NOhotmailSPAM.com.auwrote in message
news:v7********************************@4ax.com...
On Sat, 10 Nov 2007 22:20:24 GMT, "Neil" <no****@nospam.netwrote:

Rather than making a copy of your database I would try creating a new
blank
database and import only the toolbars from your database and no other
objects.
So you now have a database containing nothing but toolbars. Delete the
toolbars
you don't want, rename your target TB. Edit the TB as required and then
import
it back to your database.

This might break whatever link is syncing the toolbars in the background.
Don't
know if it will work but it would be worth a try.
Hi, Wayne. Well, I finally got around to trying your suggestion. I made a
blank db, imported the toolbars from the original db into it; deleted
unneeded objects; renamed the remaining custom menu bar; modified the menu
bar. I then deleted the original toolbar from the original db, compacted the
db, and then reimported that single menu bar back into the original db. And
guess what? It still paired up with its twin! That's right -- the
modification I made to the toolbar in the blank db was brought back into
original db in both that toolbar and in the original toolbar. The two are
inseparable.

To recap: toolbar "A" was copied to toolbar "B". Modifications made to one
were reflected in the other. Importing A and B into new B and deleting A
from new db and deleting B from original db was thought to possibly break
the link. Toolbar B was modified and renamed and brought back into original
db, and modifications were reflected in A! Talk about inseparable!

There seem to be no options here except to rebuild B from scratch. Sigh.

Anyway, thought you'd find that interesting.

Neil
Jan 3 '08 #14
I return to my original post. This is so easy to do in code, why even
bother with headache of customizing a toolbar. The following is a popup
toolbar I am using on a report, to replace the normal one. I've included
constants because I am using late binding (this was more of a test than
anything), but if you declare cbr as a Commandbar, you should get the
intellisense that goes with that.

One of the other advantages to this method, is that I have figured out how
to create dropdown comboboxes and textboxes in my popup menus, which I was
never able to figure out using the custom toolbars. All you have to do
after this is write the code for the action events.

HTH
Dale

Const BarPopup = 5
Const ControlButton = 1
Const ControlEdit = 2
Const ControlComboBox = 4
Const ButtonUp = 0
Const ButtonDown = -1

Public Sub ReportMenu()

Dim cbr As Object
Dim cbrButton As Object
Dim strSQL As String
Dim rs As DAO.Recordset

On Error Resume Next
CommandBars("MyReportMenu").Delete
On Error GoTo ReportMenuError

Set cbr = CommandBars.Add("MyReportMenu", BarPopup, , True)

With cbr

Set cbrButton = cbr.Controls.Add(ControlButton, , , , True)
With cbrButton
.Caption = "&Print"
.Tag = "Print"
.OnAction = "=fnPrintReport()"
End With

Set cbrButton = cbr.Controls.Add(ControlButton, , , , True)
With cbrButton
.Caption = "&Close"
.Tag = "Close"
.OnAction = "=fnCloseReport()"
End With

End With

Exit Sub
ReportMenuError:
MsgBox "ReportMenu error" & vbCrLf
End Sub

"Neil" <no****@nospam.netwrote in message
news:Zo*******************@newssvr27.news.prodigy. net...
>
"Wayne Gillespie" <be*****@NOhotmailSPAM.com.auwrote in message
news:v7********************************@4ax.com...
>On Sat, 10 Nov 2007 22:20:24 GMT, "Neil" <no****@nospam.netwrote:

Rather than making a copy of your database I would try creating a new
blank
database and import only the toolbars from your database and no other
objects.
So you now have a database containing nothing but toolbars. Delete the
toolbars
you don't want, rename your target TB. Edit the TB as required and then
import
it back to your database.

This might break whatever link is syncing the toolbars in the background.
Don't
know if it will work but it would be worth a try.

Hi, Wayne. Well, I finally got around to trying your suggestion. I made a
blank db, imported the toolbars from the original db into it; deleted
unneeded objects; renamed the remaining custom menu bar; modified the menu
bar. I then deleted the original toolbar from the original db, compacted
the db, and then reimported that single menu bar back into the original
db. And guess what? It still paired up with its twin! That's right -- the
modification I made to the toolbar in the blank db was brought back into
original db in both that toolbar and in the original toolbar. The two are
inseparable.

To recap: toolbar "A" was copied to toolbar "B". Modifications made to one
were reflected in the other. Importing A and B into new B and deleting A
from new db and deleting B from original db was thought to possibly break
the link. Toolbar B was modified and renamed and brought back into
original db, and modifications were reflected in A! Talk about
inseparable!

There seem to be no options here except to rebuild B from scratch. Sigh.

Anyway, thought you'd find that interesting.

Neil

Jan 4 '08 #15
Yeah, you might be right. Thanks for the code. I'll look into doing that.

Neil
"Dale Fye" <da******@nospam.comwrote in message
news:u9*************@TK2MSFTNGP03.phx.gbl...
>I return to my original post. This is so easy to do in code, why even
bother with headache of customizing a toolbar. The following is a popup
toolbar I am using on a report, to replace the normal one. I've included
constants because I am using late binding (this was more of a test than
anything), but if you declare cbr as a Commandbar, you should get the
intellisense that goes with that.

One of the other advantages to this method, is that I have figured out how
to create dropdown comboboxes and textboxes in my popup menus, which I was
never able to figure out using the custom toolbars. All you have to do
after this is write the code for the action events.

HTH
Dale

Const BarPopup = 5
Const ControlButton = 1
Const ControlEdit = 2
Const ControlComboBox = 4
Const ButtonUp = 0
Const ButtonDown = -1

Public Sub ReportMenu()

Dim cbr As Object
Dim cbrButton As Object
Dim strSQL As String
Dim rs As DAO.Recordset

On Error Resume Next
CommandBars("MyReportMenu").Delete
On Error GoTo ReportMenuError

Set cbr = CommandBars.Add("MyReportMenu", BarPopup, , True)

With cbr

Set cbrButton = cbr.Controls.Add(ControlButton, , , , True)
With cbrButton
.Caption = "&Print"
.Tag = "Print"
.OnAction = "=fnPrintReport()"
End With

Set cbrButton = cbr.Controls.Add(ControlButton, , , , True)
With cbrButton
.Caption = "&Close"
.Tag = "Close"
.OnAction = "=fnCloseReport()"
End With

End With

Exit Sub
ReportMenuError:
MsgBox "ReportMenu error" & vbCrLf
End Sub

"Neil" <no****@nospam.netwrote in message
news:Zo*******************@newssvr27.news.prodigy. net...
>>
"Wayne Gillespie" <be*****@NOhotmailSPAM.com.auwrote in message
news:v7********************************@4ax.com.. .
>>On Sat, 10 Nov 2007 22:20:24 GMT, "Neil" <no****@nospam.netwrote:

Rather than making a copy of your database I would try creating a new
blank
database and import only the toolbars from your database and no other
objects.
So you now have a database containing nothing but toolbars. Delete the
toolbars
you don't want, rename your target TB. Edit the TB as required and then
import
it back to your database.

This might break whatever link is syncing the toolbars in the
background. Don't
know if it will work but it would be worth a try.

Hi, Wayne. Well, I finally got around to trying your suggestion. I made a
blank db, imported the toolbars from the original db into it; deleted
unneeded objects; renamed the remaining custom menu bar; modified the
menu bar. I then deleted the original toolbar from the original db,
compacted the db, and then reimported that single menu bar back into the
original db. And guess what? It still paired up with its twin! That's
right -- the modification I made to the toolbar in the blank db was
brought back into original db in both that toolbar and in the original
toolbar. The two are inseparable.

To recap: toolbar "A" was copied to toolbar "B". Modifications made to
one were reflected in the other. Importing A and B into new B and
deleting A from new db and deleting B from original db was thought to
possibly break the link. Toolbar B was modified and renamed and brought
back into original db, and modifications were reflected in A! Talk about
inseparable!

There seem to be no options here except to rebuild B from scratch. Sigh.

Anyway, thought you'd find that interesting.

Neil


Jan 5 '08 #16

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by MacDermott | last post: by
1 post views Thread by Free BSD | last post: by
2 posts views Thread by =?Utf-8?B?Q3VydA==?= | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.