Hello again pete,
If you are not averse to using macros the following will do what you want.
Option Explicit
Sub test_print()
Dim rngVisible, rngToHide, rngToPrint As Range
Dim intFirstRow, intLastRow As Integer
Dim intFirstCol, intLastCol As Integer
'Determine what can be seen and get the size
Set rngVisible = ActiveWindow.VisibleRange
intFirstRow = rngVisible.Rows(1).Row
intLastRow = rngVisible.Rows(rngVisible.Rows.Count).Row
intFirstCol = rngVisible.Columns(1).Column
intLastCol = rngVisible.Columns(rngVisible.Columns.Count).Column
'Set the ranges that you need
Set rngToHide = Range(Columns(9), Columns(intFirstCol - 1))
Set rngToPrint = Range("A1").Offset(intFirstRow - 1, 0).Resize(intLastRow - intFirstRow + 1, intLastCol)
ActiveSheet.PageSetup.PrintArea = rngToPrint.Address
'Hide the unwanted columns and go to print
rngToHide.EntireColumn.Hidden = True
ActiveSheet.PrintPreview
'Restore hidden columns
rngToHide.EntireColumn.Hidden = False
End Sub
The only problem at the moment is that restoring the hidden columns loses your place in the spreadsheet but I am sure that a little more code would be possible to navigate you back to where you were.
Regards
Harry