You need something like:
Private Sub Worksheet_Change(ByVal Target as Range)
If not intersect(Range("D3"),target) is nothing and Range("D3") = "flange" then
  workbooks.open thisworkbook.path & "\file.pdf"
end if
End Sub
It needs to be put in the worksheet object module, not a standard module.