1.

Solve : outlook vba quesiton...?

Answer»

Ok, I was thinking of running the vba in powerpoint so as to leave outlook free, though I do not know what effect looping code in VBA with one microsoft program does to the functionality of other MS programs. I GUESS unless you were willing to let the vba in outlook start up powerpoint and then let it go "hands fee" you would probably have the same problem no matter which ms program was running the original code.Quote

Since it's working now and it 's only intended to be used for the next 2-3 weeks I'll probably leave it there, but not bad for a first timer!!!

Congrats! You'll be a whiz by the time March Madness 2009 rolls around. Quote from: Sidewinder on March 11, 2008, 03:47:27 PM
Congrats! You'll be a whiz by the time March Madness 2009 rolls around.

There is talk of leaving one of the machines with this on, as the sales manager is well impressed. I think he's trying to blag a 50" screen for the display as we speak.

I might have ago at tiding it up a little.

If I posted all the code, would you guys run your eye's over it?? let me know if I could make any changes to improve it??

cheersI'm willing to look it over, and not just because I could use it to set up a movie clip to play on my comp everytime I get new mail . I figure it helps to have someone else go through your code as their logic may be different from your own and they may also know of shortcuts that you don't.outlook code (main PAGE)

Code: [Select]Public WithEvents TargetFolderItems As Items
Public path As String


Private Sub Application_Startup()

'Declare MAPI folder
Dim ns As Outlook.NameSpace

'Set the default folder
Set ns = Application.GetNamespace("MAPI")
Set TargetFolderItems = ns.GetDefaultFolder(olFolderInbox).Items


Set ns = Nothing


End Sub

Private Sub TargetFolderItems_ItemAdd(ByVal Item As Object)



'Declare attachment & sender variables
Dim olAtt As Attachment
Dim olApp As Outlook.Application
Dim olNs As Outlook.NameSpace

Dim olMyParentFolder As MAPIFolder
Dim olMoveToFolder As MAPIFolder

Dim olNewItem As Object
Dim olSubject As String
Dim olsubjectna As String
Dim olsubjectna1 As String
Dim olsubjectna2 As String
Dim olAttach As String
Dim sender As String

Dim olDate As Date

'exit sub if undeliverable message as errors
olsubjectna = "Undeliverable*"
olsubjectna1 = "Read:*"
olsubjectna2 = "Not Read:*"

If Item.Subject Like olsubjectna Then
Exit Sub
End If
If Item.Subject Like olsubjectna1 Then
Exit Sub
End If
If Item.Subject Like olsubjectna2 Then
Exit Sub
End If



'Declare the sender address
'sender = "[emailprotected]"



'declare subject criteria (march madness File)
' looks for subject containing "Projection"
olSubject = "*March Madness*"

'If Item.SenderEmailAddress = sender Then
'When a new mail comes into the inbox check to see if it has an attachment and evaluate the sender
'Select Case Item.Subject
'is the mail subject _SALES_TARGET_UPLOAD?
'MsgBox "Mail Received!"

If Item.Subject Like olSubject Then


'pass file/path VARIABLE to IsFileOpen function. If True
If IsFileOpen("C:\march madness\March.ppt") = True Then

'MsgBox "condition correct!"
'saves and close's current open ppt
Set objppt = CreateObject("PowerPoint.Application")
objppt.Visible = True
Set objPresentation = objppt.Presentations("C:\march madness\MM Projection v 2.ppt")
objPresentation.Saved = True
objPresentation.Close
objppt.Quit


'MsgBox "Powerpoint closed"

create_directory


End If

Set olAtt = Item.Attachments(1)
olAtt.SaveAsFile "C:\March Madness\" & olAtt

'MsgBox "file saved"

Set objshell = CreateObject("Wscript.Shell")
objshell.Run "C:\powerSTART.bat"

End If

Set olApp = Nothing
Set olNs = Nothing
Set olMyParentFolder = Nothing
Set olMoveToFolder = Nothing
Set olNewItem = Nothing
Set olAtt = Nothing


End Sub

outlook modual code;

Code: [Select]'declare application and workbook variables
Public objExcel As PowerPoint.Application
Public objWB As PowerPoint.Presentation
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub create_directory()

'MsgBox "GOT to create directory"

'checks if the march madness folder exist

Dim PoExists As Boolean

'pass arguments to function
PoExists = FileOrDirExists("C:\march madness\")

'if the path(s) don't exist, create directories
If PoExists = FALSE Then
MkDir ("C:\march madness\")
End If


End Sub




Public Function IsFileOpen(FileName As String) As Boolean

'this function checks to see if a file is already open
'returns true if open

'declare variables
Dim iFilenum As Long
Dim iErr As Long

'check for lock file
On Error Resume Next
iFilenum = FreeFile()
Open FileName For Input Lock Read As #iFilenum
Close iFilenum
'assign number
iErr = Err
On Error GoTo 0

'select the outcome
Select Case iErr
Case 0: IsFileOpen = False
Case 70: IsFileOpen = True
'file not found
Case 53: IsFileOpen = False
Case Else: Error iErr
End Select

End Function

Sub delete_from_imported_dir()

On Error GoTo ErrHandler

'delete all files from imported extracts directory
Kill "C:\Oracle VB\Sales Target Upload\Imported Extracts\*"

'if no files in the directory exit sub (err_number 53)
ErrHandler:
Exit Sub

End Sub

End Sub

Function FileOrDirExists(PathName As String) As Boolean

'function returns true if the specified directory/file exists

Dim sTemp As String

'Ignore errors to allow for error evaluation
On Error Resume Next
sTemp = GetAttr(PathName)

'Check if error exists (0 = exists)
Select Case Err.Number
Case Is = 0
FileOrDirExists = True
Case Else
FileOrDirExists = False
End Select

'Resume error checking
On Error GoTo 0

End Functionbatch file starting vbs:

Code: [Select]@echo off

ping localhost 2 >nul

start c:\power.vbs

exit


vbs code starting powerpoint:

Code: [Select]Dim strComputer, strProcess, strProcessID

strComputer = "."
strProcess = "wscript.exe"

Function IsProcessRunning( strComputer, strProcess )
Dim Process, strObject
IsProcessRunning = False
strObject = "winmgmts://" & strComputer
For Each Process in GetObject( strObject ).InstancesOf( "win32_process" )
If UCase( Process.name ) = UCase( strProcess ) Then
IsProcessRunning = True
strProcessID = Process.ProcessID
' Wscript.Echo "Process ID: " & strProcessID
Exit Function
End If
Next
End Function





If( IsProcessRunning( strComputer, strProcess ) = True ) Then

' Wscript.Echo "Killing " & strProcessID

' ------ SCRIPT CONFIGURATION ------
intPID = strProcessID

' ------ END CONFIGURATION ---------
' WScript.Echo "Process PID: " & intPID
set objWMIProcess = GetObject("winmgmts:\\" & strComputer & _
"\root\cimv2:Win32_Process.Handle='" & intPID & "'")
' WScript.Echo "Process name: " & objWMIProcess.Name
intRC = objWMIProcess.Terminate()
if intRC = 0 Then
powerpoint
end if
End If


sub powerpoint()

' Wscript.echo ("starting powerpoint")

Const ppAdvanceOnTime = 2
Const ppShowTypeKiosk = 3
Const ppSlideShowDone = 5

Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

Set objPresentation = objPPT.Presentations.Open("C:\march madness\MM Projection v 2.ppt")

objPresentation.Slides.Range.SlideShowTransition.AdvanceTime = 5
objPresentation.Slides.Range.SlideShowTransition.AdvanceOnTime = True

objPresentation.SlideShowSettings.AdvanceMode = ppAdvanceOnTime
objPresentation.SlideShowSettings.ShowType = ppShowTypeKiosk
objPresentation.SlideShowSettings.StartingSlide = 1
objPresentation.SlideShowSettings.EndingSlide = 2
objpresentation.slideshowsettings.loopuntilstopped = True


Set objSlideShow = objPresentation.SlideShowSettings.Run.View


Do Until objppt = SlideShowEnd
If Err <> 0 Then
Exit Do
End If
Loop

WScript.Quit

end sub


enjoy!!! Yikes! You certainly do get knee deep into the code. If it works, don't change a thing. Perhaps you could persuade your boss to pay you by the word!




Discussion

No Comment Found