ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Xl 2007 v 2003 Re Populate ThisWorkbook via VBA (https://www.excelbanter.com/excel-programming/422938-xl-2007-v-2003-re-populate-thisworkbook-via-vba.html)

Seanie

Xl 2007 v 2003 Re Populate ThisWorkbook via VBA
 
Has the way you can populate ThisWorkbook via VBA changed in 2007 from
2003. The code below worked perfectly in 2003, but ThisWorkbook is
completely blank when run under 2007.


Sub Populate_TW()

Dim StartLine As Long
Dim msg1 As String, msg2 As String

Dim VBEHwnd As Long
On Error GoTo ErrH:
Application.VBE.MainWindow.Visible = False
VBEHwnd = FindWindow("wndclass_desked_gsk", _
Application.VBE.MainWindow.Caption)
If VBEHwnd Then
LockWindowUpdate VBEHwnd
End If

msg1 = "Dim myArray As Variant" & vbCr & _
"Dim arName As String" & vbCr & _
"Dim ws As Worksheet" & vbCr & _
"arName = ""MyUsers""" & vbCr & _
"myArray = ThisWorkbook.Names(arName).RefersToRange.Value" & vbCr & _
"application.screenupdating=false"

msg2 = "With Application" & vbCr & _
"If IsError(.Application.Match(.UserName, myArray, 0)) Then " & vbCr &
_
"MsgBox ""You are NOT Permitted to access this File "" & vbCr & _" &
vbCr & _
""""" & vbCr & _" & vbCr & _
"""Please Contact Joe Bloggs at "" & vbCr & _" & vbCr & _
""""" & vbCr & _" & vbCr & _
"""123 Group +00999 1 9999999""" & vbCr & _
"Application.DisplayAlerts = False" & vbCr & _
"ThisWorkbook.Close False" & vbCr & _
"Else" & vbCr & _
"For Each ws In Worksheets" & vbCr & _
"ws.Visible = True" & vbCr & _
"Next" & vbCr & _
"Worksheets(""E-Blank"").Visible = False" & vbCr & _
"Worksheets(""E-Users"").Visible = xlVeryHidden" & vbCr & _
"Worksheets(""E-Sales"").Activate" & vbCr & _
"Application.DisplayAlerts = True" & vbCr & _
"End If" & vbCr & _
"End With"

With ActiveWorkbook.VBProject.VBComponents("ThisWorkboo k").CodeModule
StartLine = .CreateEventProc("Open", "Workbook") + 1
..InsertLines StartLine, msg1 & vbCr & msg2
End With
Application.VBE.MainWindow.Visible = False
ErrH:
LockWindowUpdate 0&
End Sub

Jon Peltier

Xl 2007 v 2003 Re Populate ThisWorkbook via VBA
 
Security has changed tremendously in Excel 2007. Since your code is going in
and manipulating VBA code, you need to establish certain permissions in
Excel 2007 which will allow you to do this. I don't know how to do this, but
I would start with macro security, then with VBA project security. Click on
the big Office Orb in the top left corner, then on Excel Options, then on
Trust Center, then set the macro security to a medium setting and look for
something that will allow access to VB Projects.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services, Inc.
http://PeltierTech.com/WordPress/
_______


"Seanie" wrote in message
...
Has the way you can populate ThisWorkbook via VBA changed in 2007 from
2003. The code below worked perfectly in 2003, but ThisWorkbook is
completely blank when run under 2007.


Sub Populate_TW()

Dim StartLine As Long
Dim msg1 As String, msg2 As String

Dim VBEHwnd As Long
On Error GoTo ErrH:
Application.VBE.MainWindow.Visible = False
VBEHwnd = FindWindow("wndclass_desked_gsk", _
Application.VBE.MainWindow.Caption)
If VBEHwnd Then
LockWindowUpdate VBEHwnd
End If

msg1 = "Dim myArray As Variant" & vbCr & _
"Dim arName As String" & vbCr & _
"Dim ws As Worksheet" & vbCr & _
"arName = ""MyUsers""" & vbCr & _
"myArray = ThisWorkbook.Names(arName).RefersToRange.Value" & vbCr & _
"application.screenupdating=false"

msg2 = "With Application" & vbCr & _
"If IsError(.Application.Match(.UserName, myArray, 0)) Then " & vbCr &
_
"MsgBox ""You are NOT Permitted to access this File "" & vbCr & _" &
vbCr & _
""""" & vbCr & _" & vbCr & _
"""Please Contact Joe Bloggs at "" & vbCr & _" & vbCr & _
""""" & vbCr & _" & vbCr & _
"""123 Group +00999 1 9999999""" & vbCr & _
"Application.DisplayAlerts = False" & vbCr & _
"ThisWorkbook.Close False" & vbCr & _
"Else" & vbCr & _
"For Each ws In Worksheets" & vbCr & _
"ws.Visible = True" & vbCr & _
"Next" & vbCr & _
"Worksheets(""E-Blank"").Visible = False" & vbCr & _
"Worksheets(""E-Users"").Visible = xlVeryHidden" & vbCr & _
"Worksheets(""E-Sales"").Activate" & vbCr & _
"Application.DisplayAlerts = True" & vbCr & _
"End If" & vbCr & _
"End With"

With ActiveWorkbook.VBProject.VBComponents("ThisWorkboo k").CodeModule
StartLine = .CreateEventProc("Open", "Workbook") + 1
.InsertLines StartLine, msg1 & vbCr & msg2
End With
Application.VBE.MainWindow.Visible = False
ErrH:
LockWindowUpdate 0&
End Sub




Seanie

Xl 2007 v 2003 Re Populate ThisWorkbook via VBA
 
Yes I had all that checked, pretty much how my 2003 was set, with
Trust access to VBA project objet module and within Reference to MS
VBA accessibility



All times are GMT +1. The time now is 12:13 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com