I am developing an application that creates (from scratch) a Word document. I'm developing using VB.Net 2010 (Pro). I have on my machine MS Office 2010, the user has Office 2003, so I'm using late binding.
Here is the block of code that's failing
Dim shp As Object = oTable.Cell(1, 1).Range.InlineShapes.AddPicture(sBMPFile)
writeLog("Adjust Image Size", "clsReport", "writePage05")
.LockAspectRatio = 1
Dim fOldWidth As Single = .Width
writeLog("Adjust Image Width", "clsReport", "writePage05")
.Width = m_oWord.InchesToPoints(4)
If .Height > m_oWord.InchesToPoints(4.5) Then
writeLog("Adjust Image Height", "clsReport", "writePage05")
.Height = m_oWord.InchesToPoints(4.5)
Specifically, I have localized the error to occur at the "LockAspectRatio" line, or the line after.
The error that's thrown is this:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ArgumentException: The specified value is out of range.
at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateSet(Object o, Type& objType, String name, Object args, String paramnames, Boolean OptimisticSet, CallType UseCallType)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Object Instance, Type Type, String MemberName, Object Arguments, String ArgumentNames, Type TypeArguments, Boolean OptimisticSet, Boolean RValueBase, CallType CallType)
Yada, yada, yada
I'm fairly certain the issue is the fact that the "LockAspectRatio" value should be "msoTrue", but since I'm late binding I'm merely guessing at the actual numeric value.