|
-
Apr 7th, 2012, 11:21 AM
#1
Thread Starter
Member
[RESOLVED] Word - Insert TextBox formatted to accept code
I'm trying to build a document containing my current working macros in Word so that I can just open it up, find the code I want and copy and paste it to where it is needed.
The problem I'm having is that some of my code is a little extensive. See below my custom event code for forcing a user to enable macros when using a file.
This code for instance spans about 3/4 pages of the Word document and is therefore causing a bit of a problem when navigating that particular section.
What I would really like is a way of creating a code box automatically inside the Word document, preferably at the place where my cursor is currently.
The workings of the code box would hopefully be very similar to using [CODE] tags on this forum: grey background, fixed-width font and horizontal and vertical scroll bars.
The scroll bars are a must to help cut down on the space.
Can anybody help with this?
Here is the long code sample as mentioned above, in case you want an idea of the size of text I am looking to include:
Code:
Option Explicit
'Set to name of sheet to be shown when macros are disabled
Const strMacroSplash As String = "Macros Disabled"
Sub prCust_WbOpen()
With Application
.EnableCancelKey = xlDisabled 'So that user cannot cancel the macro
.ScreenUpdating = False 'Stop screen flashing
'Show all sheets except the macros are disabled sheet
Call prShowShts
'Set to True so that the 'Are you sure...' prompt does not show straight after being opened
ThisWorkbook.Saved = True
.ScreenUpdating = True
.EnableCancelKey = xlInterrupt 'Reset application settings
End With
End Sub
Sub prCust_WbBeforeClose(Cancel As Boolean)
Dim WB As Workbook
Dim lngCount As Long
With Application
.EnableEvents = False
.EnableCancelKey = xlDisabled
End With
With ThisWorkbook
'If file has had changes made since the last save...
If Not .Saved Then
'Emulate normal 'Are you sure you want to save?' prompt
Select Case MsgBox("Do you want to save the changes you made to '" & .Name & "'?", _
vbYesNoCancel + vbExclamation)
Case Is = vbYes
'If Yes to save call our custom save procedure
Call prCust_SaveUI
Case Is = vbNo
'If No, we do not need to do anything
Case Is = vbCancel
'If Cancel, set the variable Cancel to True so that file is not closed.
Cancel = True
End Select
End If
If Cancel = False Then
'If Cancel is False we can set the Saved property to True, as we know it is either saved via
'the custom save procedure or does not need to be.
'This means that the 'Are you sure...' prompt will not show up any more.
.Saved = True
End If
End With
clean_up:
With Application
.EnableCancelKey = xlInterrupt
.EnableEvents = True
End With
If Cancel = False Then
'Loop through all currently open Workbooks
For Each WB In Workbooks
'If the Workbook is not this Workbook or the 'PERSONAL' Workbook...
If WB.Name <> ThisWorkbook.Name And (UCase(WB.Name) <> "PERSONAL.XLS" Or UCase(WB.Name) <> "PERSONAL.XLSB") Then
'Add 1 to our count
lngCount = lngCount + 1
End If
Next WB
'If the count of Workbooks is 0 or, put another way, if this Workbook is the only one open...
If lngCount = 0 Then
'Quit the application. Avoids leaving a blank Excel Application behind.
Application.Quit
End If
End If
End Sub
Sub prCust_WbBeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
'Call our custom save procedure, passing on whether it is SaveAs or just Save
Call prCust_SaveUI(SaveAsUI)
'Set Cancel to True to cancel the normal Excel save procedure
Cancel = True
Application.EnableEvents = True
End Sub
Private Sub prCust_SaveUI(Optional bSaveAs As Boolean = False)
Dim ws As Worksheet
Dim wsAct As Worksheet
Dim strFName As String
Dim bSaved As Boolean
Application.ScreenUpdating = False
'Keep a reference to the active sheet so that we can reselect it later on
Set wsAct = ActiveSheet
'Hide all sheets except the macros disabled sheet
Call prHideShts
'If the save is a SaveAs Type, show the SaveAs dialog for these file types
'Since this is a macro enabled file, make '.xlsm' the default selection (FilterIndex part)
If bSaveAs = True Then
strFName = Application.GetSaveAsFilename( _
fileFilter:="Excel 97-2003 Workbook (*.xls), *.xls," & _
"Excel Macro-Enabled Workbook (*.xlsm), *.xlsm", _
FilterIndex:=2)
If Not strFName = "False" Then
'If Cancel wasn't clicked SaveAs the Workbook, and set our variable to True
'The variable is used later on to check if the file was actually saved,
'since there is a chance for the user to cancel
ThisWorkbook.SaveAs strFName
bSaved = True
End If
Else
'If not SaveAs, just Save the Workbook normally. Also sets the variable to True
ThisWorkbook.Save
bSaved = True
End If
'Show all sheets except the macros are disabled sheet again,
'and activate the previous ActiveSheet
Call prShowShts
wsAct.Activate
'If a save occurred the Saved property will be set to True, so we do not get the
' "Are you sure?" prompt
ThisWorkbook.Saved = bSaved
Application.ScreenUpdating = True
End Sub
Private Sub prHideShts()
Dim ws As Worksheet
'Make the macros are disabled sheet visible
'(uses the constant variable defined at the top of this code)
Worksheets(strMacroSplash).Visible = xlSheetVisible
'Loop through all Worksheets and hide them if they are not the macros are disabled sheet
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = strMacroSplash Then
ws.Visible = xlSheetVeryHidden
End If
Next ws
'Make sure the macros are disabled sheet is active
Worksheets(strMacroSplash).Activate
End Sub
Private Sub prShowShts()
Const strH As String = "Hidden"
Dim ws As Worksheet
'Loop through all Worksheets and show them if they are not the macros are disabled sheet
'Do not show them if they start with the string contained in the variable strH
For Each ws In ThisWorkbook.Worksheets
If Not ws.Name = strMacroSplash And Not Left(ws.Name, Len(strH)) = strH Then
ws.Visible = xlSheetVisible
End If
Next ws
'Hide the macros are disabled sheet
Worksheets(strMacroSplash).Visible = xlSheetVeryHidden
End Sub
Thanks in advance for any suggestions!
Please test any VBA code I suggest in a copy of your file. If the code errors or deletes your data it is not able to be undone.
Home: Mac Book Pro | Snow Leopard | Excel for Mac 2011
Home: Windows 7 | MS Office 2010 (Running on Parallels Desktop as a VM)
Work: Windows 7 | MS Office 2010
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|