Home |
Search |
Today's Posts |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Here is some code for you to try. It just fires a message box when the
approprite file has been opened. You can modify it to deal with your data sheet... If you need help reply back... Create a blank workbook. In the code window add a class module. Name the Class module clsXLEvents. Place this code in the class module. Option Explicit Private WithEvents xlApp As Excel.Application Private Const SHEETNAME As String = "Data" Private Const APPPATH As String = "C:\Test" Private Sub Class_Initialize() Set xlApp = Excel.Application End Sub Private Sub xlApp_WorkbookOpen(ByVal WB As Workbook) If SheetExists(SHEETNAME, WB) And WB.Path = APPPATH Then MsgBox "Tada" End If End Sub Private Function SheetExists(SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Resume Next If WB Is Nothing Then Set WB = ThisWorkbook SheetExists = CBool(Len(WB.Sheets(SName).Name)) End Function Now in the thisworkbook module add the following code... Option Explicit Dim OpenEvent As clsXLEvents Private Sub Workbook_AddinInstall() Set OpenEvent = New clsXLEvents End Sub Private Sub Workbook_AddinUninstall() Set OpenEvent = Nothing End Sub Private Sub Workbook_Open() Set OpenEvent = New clsXLEvents End Sub -- HTH... Jim Thomlinson "kewlrunnings" wrote: Yea thats exactly what i want it todo. Also I need to put in an "if" statement for activeworksheet.path so the add-in only formats excel files in a particular folder. Thanks for your reply.... "Jim Thomlinson" wrote: The code you have is actually a long way from doing what you want to do... Let me know if this is what you want. Every time that a workbook is opened it checks for a sheet called Data. If that sheet exists then it reformats that sheet as per your existing macros? Just so we are on the same page that can be done but there is no undo after a macro runs so any sheet called "data" will be reformatted, whether doing so is appropriate or not. -- HTH... Jim Thomlinson "kewlrunnings" wrote: I have the following code in a module saved as an Add-in. I wanted this add-in to be activated everytime an excel file is open. When I run this code while a file is open in the VBA editor, the code works fine. But when I open a file, the error "Worksheets of object global failed 1004" pops up. I removed the "Worksheets("data").activate" line to see if it would run but then the error msg reads "Columns of object global failed 1004". I then removed the first call hide_cols() and the error msg reads "Cells of object global failed 1004". I've been searching for clues on the web still cant get it to work. Any suggestions or help would be greatly apprectiated thanks. Sub Auto_open() Worksheets("Data").Activate Call Hide_cols Call Format_cols Call Filter_SM Call Page_Setup End Sub Sub Hide_cols() Dim i As Integer For i = 26 To 1 Step -1 If (i < 2) And (i < 3) And (i < 5) And (i < 6) And (i < 9) And (i < 15) And (i < 24) Then Columns(i).Select Selection.EntireColumn.Hidden = True End If Next i End Sub Sub Format_cols() Cells(1, "X").Value = "SsC" Cells(1, "O").Value = "SL" Cells(1, "E").Value = "AWS" Cells(1, "I").Value = "BOH" Cells(1, "AA").Value = "Pickbin" Cells(1, "AB").Value = "SGF" Cells(1, "AC").Value = "Diff+/-" Range("E1:AC1").HorizontalAlignment = xlHAlignCenter Cells(1, "AC").Font.Bold = True With Worksheets("Data") .Columns("O").NumberFormat = "00-00-00" .Columns("B").AutoFit .Columns("E").AutoFit .Columns("O").AutoFit .Columns("X").AutoFit .Columns("I").AutoFit .Columns("AA:AC").ColumnWidth = 9 .Columns("C").ColumnWidth = 39.3 End With End Sub Sub Filter_SM() Columns("F").AutoFilter Field:=1, Criteria1:="=2" Columns("F").Select Selection.EntireColumn.Hidden = True End Sub Sub Page_Setup() With Worksheets("Data").PageSetup .CenterHeader = Format(Now(), "mmmm dd, yyyy") .RightHeader = "page &p" .CenterHorizontally = True .Zoom = 125 .Orientation = xlLandscape .PrintGridlines = True .LeftMargin = Application.InchesToPoints(0.75) .RightMargin = Application.InchesToPoints(0.75) .TopMargin = Application.InchesToPoints(0.51) .BottomMargin = Application.InchesToPoints(0.35) .HeaderMargin = Application.InchesToPoints(0.2) .FooterMargin = Application.InchesToPoints(0.2) .PrintTitleRows = ActiveSheet.Rows(1).Address End With End Sub |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
runtime error 1004 HELP PLS | Excel Discussion (Misc queries) | |||
Runtime Error '1004' | Excel Discussion (Misc queries) | |||
Excel 2003 Macro Error - Runtime error 1004 | Excel Discussion (Misc queries) | |||
Runtime Error '1004' | Excel Programming | |||
Runtime error 1004 | Excel Programming |