Prueba esto que me encontré.
Sub Tester()
Dim Ret As Long, myAddress1 As String, myAddress2 As String, myPath As String
myAddress1 = ActiveCell.Address
myAddress2 = "$B$" & Right(myAddress1, 1)
myPath = Range(myAddress1).Value + Range(myAddress2).Value
'// Substitute here your Doc full path
Ret = fnShellOperation(myPath, "print", SW_MAXIMIZE)
End Sub
'---------------------------------------------------------------------------------------
' Module : basShellOp
' DateTime : 29/09/03 18:31
' Author : Ivan F Moala
' Purpose : Opens ANY Document/File
'---------------------------------------------------------------------------------------
Option Explicit
Public Declare Function ShellExecute _
Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Private Const SW_HIDE As Long = 0
Private Const SW_NORMAL As Long = 1
Private Const SW_MAXIMIZE As Long = 3
Private Const SW_MINIMIZE As Long = 6
'//---------------------------------------------------------------------------------------
'// Function : fnShellOperation
'// DateTime : 20/09/03 20:50
'// Author : "Ivan F Moala"
'// Site : "
http://www.xcelfiles.com"
'// Purpose : Performs an operation eg Open,Print
'// : a specified file. The file can be an executable file or a document file.
'---------------------------------------------------------------------------------------
Public Function fnShellOperation(strFilePath As String, _
Optional strOperation As String, _
Optional nShowCmd As Double) As Long
Dim hWndDesk As Long
'// Use the desktop as default ... you should use your App.handle
hWndDesk = GetDesktopWindow()
If Len(strOperation) = 0 Then strOperation = "Open"
If nShowCmd = Null Then nShowCmd = SW_MAXIMIZE
'// Failure when >0 or <=32
fnShellOperation = ShellExecute(hWndDesk, strOperation, strFilePath, 0, 0, nShowCmd)
If fnShellOperation <= 32 Then
MsgBox "Couldn't " & strOperation & " " & strFilePath & vbCrLf & vbCrLf & _
"Error:= " & fnShellErr(fnShellOperation)
End If
'// OK check IF there was an Association Error
If fnShellOperation = 31 Then
'// OK Ask user if they want to Open it using another program
If MsgBox(strOperation & " Using another Application", vbYesNo) = vbYes Then
Shell "rundll32.exe shell32.dll,OpenAs_RunDLL " & strFilePath, vbNormalFocus
End If
End If
End Function
'//---------------------------------------------------------------------------------------
'// Function : fnShellErr
'// DateTime : 20/09/03 20:50
'// Author : "Ivan F Moala"
'// Site : "
http://www.xcelfiles.com"
'// Purpose :
'---------------------------------------------------------------------------------------
Public Function fnShellErr(Ret As Long) As String
Select Case Ret
'// Typical Errors
Case 0: fnShellErr = "The operating system is out of memory or resources."
Case Is = 2: fnShellErr = "The specified FILE was not found."
Case Is = 3: fnShellErr = "The specified PATH was not found."
Case Is = 5: fnShellErr = "The operating system denied access to the specified file."
Case Is = 8: fnShellErr = "There was not enough memory to complete the operation."
Case Is = 11: fnShellErr = "The .EXE file is invalid (non-Win32 .EXE or error in .EXE image)."
Case Is = 26: fnShellErr = "A sharing violation occurred."
Case Is = 27: fnShellErr = "The filename association is incomplete or invalid."
Case Is = 28: fnShellErr = "The DDE transaction could not be completed because the request timed out."
Case Is = 29: fnShellErr = "The DDE transaction failed."
Case Is = 30: fnShellErr = "The DDE transaction could not be completed because other DDE transactions were being processed."
Case Is = 31: fnShellErr = "There is no application associated with the given filename extension."
Case Is = 32: fnShellErr = "The specified dynamic-link library was not found."
Case Else: fnShellErr = "*UNDEFINED* Error"
End Select
End Function