Create Macro using VBA / Macro

R

Rene Petersen

This great code (code1) is found in here to paste unformatted text, I have
used this and assigned it to a shortcut key using code 2.

Now I would very much like to share this with my collegues and I therefore
need to know how I use a third macro to add the first macro (code 1) to my
collegues normal.dot and run code two to assign key.

I will send them the code using a document with the macro.

'Code 1
Sub PasteUnfText()
On Error GoTo Oops

Selection.PasteSpecial DataType:=wdPasteText, Placement:= _
wdInLine
End
Oops:
Beep
End Sub

'Code 2
Sub AssignKey()

CustomizationContext = NormalTemplate
KeyBindings.Add KeyCategory:=wdKeyCategoryCommand, _
Command:="PasteUnfText", _
KeyCode:=BuildKeyCode(wdKeyAlt, wdKeyV)

End Sub
 
W

Word Heretic

G'day "Rene Petersen" <[email protected]>,

Point them to the macros tab at word.mvps.org/FAQs/index.htm to
describe how to copy n paste it in for themselves.

Even better, stick the code in a Global template, send them that with
instructions to copy said template into the folder nominated in Tools
Options > File Locations.


Steve Hudson - Word Heretic

steve from wordheretic.com (Email replies require payment)
Without prejudice


Rene Petersen reckoned:
 
R

Rene Petersen

Thank you for your response.

This is not what I am looking for though, I need automation in the word
document I send, a macro writing another macro. I will then stick it in
Document_Open().

The two options you mention would not work, many of my colleagues users are
not that computer literate that I will ask them to write in the code
themselves and by making a global template I believe it would overwrite their
normal.dot and anything they already have personalised, I merely want to add
the code mentioned, again they would need to change setting anyway for this
to work and I would want to make it as easy as possible for my colleagues

If anyone could tell me how to make an automation on writing a macro into
normal.dot I would appreciate it.

Thank you,
Rene Petersen
 
J

Jezebel

Don't try it. Try to use one macro to write another (or to manipulate the
VBE in any way at all) is technically difficult, and completely prevented
anyway -- for very good reasons -- in most security setups. It's also poor
practice in principle, and considered rude if nothing else, to muck around
with other user's set-ups or to modify their normal.dot.

Send a template containing the macro, as Steve suggests.
 
J

Jay Freedman

Hi Rene,

I agree completely with Steve and Jezebel. The path you're proposing
would be nothing but trouble. Use the global template method instead.

To clarify one point of misunderstanding:

Loading a global template that contains only the macro you're
distributing will *not* overwrite their normal.dot, it will just add
the macro to the available list of macros. See
http://www.word.mvps.org/FAQs/Customization/WhatTemplatesStore.htm and
http://www.word.mvps.org/FAQs/MacrosVBA/DistributeMacros.htm for more
explanation.
 
C

Charles Kenyon

You can distribute a global template other than normal.dot. You are right
that you do not want to overwrite normal.dot; in addition, you do not want
to write in someone else's normal.dot. See
http://addbalance.com/word/movetotemplate.htm for step-by-step instructions
on moving / sharing / copying / backing-up customizations including
AutoText, AutoCorrect, keyboard assignments, toolbars, macros, etc.
 
R

Rene Petersen

I do appreciate your concern about writing into someone else’s normal.dot,
and can ensure you that I would not send it to someone who do not wish to
have the shortcut ALT+V to paste unformatted text. I could even make it so
that in the word document I send the users it would be explained and they
would require to press ALT+V to start the macro instead of making it
document_open() like suggested earlier. Then ALT+V would simply kick of the
macro (which I do not know how to write yet) and after that ALT+V would be
their new key binding for pasting unformatted text, which I know so many
users would appreciate.

As I tried to express earlier I already know how to deal with global
template and using a global template would entirely overwrite their
normal.dot and then I do think it would be a lot more appreciated by the
users if I only added a small code rather than overwriting the lot.

To let the users manipulate their own normal.dot code is not an option, some
of the users are not that computer literate, in fact some do not even know
how to record a macro, so messing about with VB is out of the question.

I am honestly not trying to be rude, but merely save some time, so if you
can not answer the question on whether it is possible to create a macro that
can write another macro and tell me how to do it and write it to normal.dot,
or if someone can tell me it is impossible then please do not reply, it only
waste yours and my time.

Thank you,
Rene
 
J

Jay Freedman

Hi Rene,

What we're all trying to tell you is that this statement of yours is
not correct:
... using a global template would entirely overwrite their
normal.dot

That is *not* what happens! When a global template contains macros and
keystroke assignments that don't occur in normal.dot, they are *added
to* what's available in normal.dot. Nothing is overwritten, nothing is
removed.
 
C

Charles Kenyon

Hi Rene,

You are confusing normal.dot which is a specific global template with global
template. When I start Word I load about 15 different global templates! Each
contributes different code and interface items. If you look at the links I
gave you in earlier posts you will see this explained and find step-by-step
instructions on how to create a global template that is loaded in addition
to normal.dot.
--
Charles Kenyon

Word New User FAQ & Web Directory: http://addbalance.com/word

Intermediate User's Guide to Microsoft Word (supplemented version of
Microsoft's Legal Users' Guide) http://addbalance.com/usersguide

See also the MVP FAQ: http://www.mvps.org/word which is awesome!
--------- --------- --------- --------- --------- ---------
This message is posted to a newsgroup. Please post replies
and questions to the newsgroup so that others can learn
from my ignorance and your wisdom.
 
M

macropod

Your code for pasting unformatted text could be made much simpler:
Sub PasteUnformattedText()
On Error Resume Next
Selection.PasteSpecial DataType:=wdPasteText
End Sub

I would also suggest attaching this to a toolbar button instead of a
keyboard shortcut - I believe most users would find that easier to use, even
if it's not as quick for those of us who can remember keyboard shortcuts.

As for distributing the code, there's all sorts of ways, depending on
whether you want to do it from a text file or copy from a vba module in one
file to another, and whether you want to add the code to an existing module
or create a new module for it.

Cheers
 
R

Rene Petersen

Thank you very much for your feedback.

Rene


macropod said:
Your code for pasting unformatted text could be made much simpler:
Sub PasteUnformattedText()
On Error Resume Next
Selection.PasteSpecial DataType:=wdPasteText
End Sub

I would also suggest attaching this to a toolbar button instead of a
keyboard shortcut - I believe most users would find that easier to use, even
if it's not as quick for those of us who can remember keyboard shortcuts.

As for distributing the code, there's all sorts of ways, depending on
whether you want to do it from a text file or copy from a vba module in one
file to another, and whether you want to add the code to an existing module
or create a new module for it.

Cheers
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top