我正在Excel中使用来自我的vb.net应用程序中的数据表的数据创建一个提取。它正确地提取一切。现在我正在尝试做一些设计工作,以使它完美。看起来我遇到的问题很可能很容易,但由于某些原因我不断收到以下错误。
找不到类型'ApplicationClass'上的公共成员'XlDirection'。
我的目标是找到A列中的最后一行数据,然后将所有单元格从A4开始,并在从A4开始的所有列上执行.columns.autofit我之所以这样做是因为单元格A1 - A3有其中包含一些长文本值,我希望它们能够保持原样。
代码:
Dim wSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim _excel As New Microsoft.Office.Interop.Excel.Application
wSheet = wBook.ActiveSheet()
Dim lRow As Long
With wSheet
lRow = .Range("A" & .Rows.Count).End(_excel.XlDirection.xlUp).Row
.Range("A4" & lRow).Columns.AutoFit()
End With
答案 0 :(得分:2)
原始错误是由于XlDirection
是<{1}} 名称空间中的Microsoft.Office.Interop.Excel
枚举,因此它不是Excel.Application
的成员。位_excel.XlDirection.xlUp
应为:
Microsoft.Office.Interop.Excel.XlDirection.xlUp
第二个问题是你在这里建立的范围......
lRow = .Range("A" & .Rows.Count).End(_excel.XlDirection.xlUp).Row .Range("A4" & lRow).Columns.AutoFit()
...只需将行号附加到&#34; A4&#34;的末尾。因此,如果最后一行是42,那么您自动适应的范围将是&#34; A442&#34;。它必须是("A4:A" & lRow)
。
但这仍然只是自动适合A栏。如果这是你的意图,请停在这里。如果您需要自动调整所有列(如短语&#34所示;所有 列 从A4和#34开始; - my强调),继续阅读。
首先,您不需要查找最后一个行号 - 当您执行自动调整时,您正在使用列,所以{{1和其他任何东西一样。你真的需要找到最右边的列,但是我会跳过所有这些并将使用范围向下偏移3行:
Rows.Count