Здравейте на всички страхотни програмисти!
Може ли някой да ми обясни как да оправя този проблем? Работи чудесно в excel 2003, но през 2010 получавам тази грешка:
Може ли някой да ме насочи в правилната посока? Това, което трябва да направи scaleheight, е да се увери, че ЦЕЛИЯТ текст, копиран в обекта Word, е видим - което не е така, ако задам scaleheight на 1, а на msoFalse.
Трябва да можете да копирате и поставите кода в нов суб.
Sub Embed_WordDocument_To_sheet()
Dim oWD As Document ' Word Document Object (Use Microsoft Word Reference)
Set ws = Worksheets.Add
Set wsFactark = Worksheets("Sheet1")
ws.Range("C3").Select
Set oOLEWd = ws.OLEObjects.Add( _
ClassType:="Word.Document", _
Width:=375)
oOLEWd.Name = "EmbeddedWordDoc"
oOLEWd.ShapeRange.LockAspectRatio = msoFalse
oOLEWd.Width = 375
oOLEWd.Height = 10 ' bliver ligegyldig når du har gjort det som står i nederste kommentar.
oOLEWd.Top = ws.Range("C3").Top + 2 ' +2 for ikke at overstrege border-linjen
oOLEWd.Left = ws.Range("C3").Left + 5 ' samme
' PROBLEM - "The relativetooriginalsize argument applies only to a picture or an OLE object." !!!
oOLEWd.ShapeRange.ScaleHeight 1, msoTrue ' msoFalse works, msoCTrue doesn't
oOLEWd.Placement = xlFreeFloating
' Assign the OLE Object to Word Object
Set oWD = oOLEWd.Object
wsFactark.Cells(I + 4, 13).Copy
oWD.Paragraphs(oWD.Paragraphs.Count).Range.PasteAndFormat (wdFormatOriginalFormatting)
With oWD.PageSetup
.TopMargin = 0
.BottomMargin = 0
.LeftMargin = 0
.RightMargin = 0
.PageHeight = 1584 'max
.PageWidth = 1584
End With
oOLEWd.Activate
oOLEWd.Height = selection.Application.UsableHeight
oOLEWd.ShapeRange.Line.Visible = msoFalse
If oOLEWd.Height > 400 And oOLEWd.Height < 800 Then
ws.Range("B3").RowHeight = 400
ws.Range("B4").RowHeight = oOLEWd.Height - 400 + 20
ElseIf oOLEWd.Height > 800 And oOLEWd.Height < 1000 Then
ws.Range("B3").RowHeight = 400
ws.Range("B4").RowHeight = 200
ws.Range("B5").RowHeight = 200
ws.Range("B7").RowHeight = oOLEWd.Height - 800 + 20
ElseIf oOLEWd.Height > 1000 And oOLEWd.Height < 1200 Then
ws.Range("B3").RowHeight = 400
ws.Range("B4").RowHeight = 200
ws.Range("B5").RowHeight = 200
ws.Range("B6").RowHeight = 200
ws.Range("B7").RowHeight = 200
ws.Range("B9").RowHeight = oOLEWd.Height - 1000 + 20
Else
ws.Range("B3").RowHeight = oOLEWd.Height
ws.Range("B4:B11").RowHeight = 0
End If
ws.Range("B12").RowHeight = 10
Range("A1").Select
End Sub
wsFactark.Cells(I + 4, 13).Copy
Странно, ако работи през 2007 г., но не и през 2010 г. :/ - person FransRasmussen   schedule 12.03.2015