根据行总高度select一行范围

有一点背景,我有一个从多个excel文件中提取的vbs代码,然后将它们粘贴到word文档中以创build报告。 一切工作就像它应该,但是我需要能够根据他们的行高组合行select一系列的行。 原因是因为我复制graphics并将其粘贴到单词中作为图片,然后代码打开另一个excel文件并select数据并将其粘贴到单词中作为该图下方的图片,然后继续循环直到它已经通过了所有的文件。 如果行的使用范围的组合行高度大于此值,则可以放置8个正常大小的行(14.3)或图表下方114.4的总行高度,则需要转到下一页。

现在我所看到的是代码会查看使用的范围,如果它大于8行,它将select使用的范围并粘贴到下一页,或者如果使用的范围小于8,它将select总共8即使它们是空的也行,并粘贴它使整个报告保持统一。 然而,有些时候,有less于8行数据的数据,但行或两个不得不增加,以适应所有的文字(列宽必须固定,因为有一个设置的区域,它必须符合word文档),因此使得8行的总行高度大于114.4,并且将不再适合graphics的下方。 在这种情况下,我需要它从114.4组合的行高而不仅仅是8行select。

我希望我已经解释了我需要做的事情,以便得到一些必要的帮助。 下面是我目前的尝试,试图根据行高select数据…它将运行通过代码没有错误,但它会刚刚离开使用的范围,我不能让代码引用行高度做任何事情,如果它只是忽略了这个代码。

Sub Events(f) Set objWkb3 = objExcel.Workbooks.Open(f) LastRowEvents = objWkb3.Sheets("Events").usedRange.Rows.Count LastRowEvents1 = objWkb3.Sheets("Events").usedRange.Rows LastRowEvents2 = objWkb3.sheets("Events").usedRange.RowHeight LastRowEvents3 = objWkb3.sheets("Events").Range("F1:F8").RowHeight 'Selection of Events If LastRowEvents > 8 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture objWord1.Selection.TypeParagraph objWord2.Selection.TypeParagraph Elseif LastRowEvents2 > 114.4 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture objWord1.Selection.TypeParagraph objWord2.Selection.TypeParagraph Elseif LastRowEvents2 = 114.4 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture Else objWkb3.Sheets("Events").Range("A1:F8").CopyPicture End If 'Events to PJR wsh.sleep 1500 objWord1.Selection.Paste objWord1.Selection.MoveRight objWord1.Selection.TypeParagraph 'Events to Gas objWord2.Selection.Paste objWord2.Selection.MoveRight objWord2.Selection.TypeParagraph 'objWkb3.Save objWkb3.Close(0) End Sub 

我一直在玩,尝试不同的事情,通过改变.RowHeight。高度我能够得到我想要的代码工作。

 Sub Events(f) Set objWkb3 = objExcel.Workbooks.Open(f) LastRowEvents = objWkb3.Sheets("Events").usedRange.Rows.Count LastRowEvents1 = objWkb3.Sheets("Events").usedRange.Rows LastRowEvents2 = objWkb3.sheets("Events").usedRange.Height LastRowEvents3 = objWkb3.sheets("Events").Range("A1:F8").Height MRow1 = Round(((114.4 - LastRowEvents2)/14.3),0) MRowT = MRow1 + LastRowEvents 'Selection of Events If LastRowEvents > 8 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture objWord1.Selection.TypeParagraph objWord2.Selection.TypeParagraph Elseif LastRowEvents2 > 114.4 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture objWord1.Selection.TypeParagraph objWord2.Selection.TypeParagraph Elseif LastRowEvents2 = 114.4 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture Elseif LastRowEvents3 > 114.4 then objWkb3.Sheets("Events").Range("A1:F" & MRowT).CopyPicture Elseif LastRowEvents3 = 114.4 then objWkb3.Sheets("Events").Range("A1:F" & LastRowEvents).CopyPicture Else objWkb3.Sheets("Events").Range("A1:F8").CopyPicture End If 'Events to PJR wsh.sleep 500 objWord1.Selection.Paste objWord1.Selection.MoveRight objWord1.Selection.TypeParagraph 'Events to Gas objWord2.Selection.Paste objWord2.Selection.MoveRight objWord2.Selection.TypeParagraph 'objWkb3.Save objWkb3.Close(0) End Sub