请教高手帮忙看看这句VBA代码出了什么问题!
正在开发个简单的VBA的PPT:有一个表,有一列ID,一行一个,几千行,现在要把excel表上的ID放到PPT上,每页PPT放10个ID,简单的对齐排版,研究了一天,基本实现了想要的效果,但是遇到了一个问题一直想不通,所以发上来看有没有高手能帮忙指教一下:
以下为出错部分代码
代码“lastRow = xlSht.Range("A" & Rows.Count).End(xlUp).Row” 出错,但在excel里面运行是没问题的 lastRow = xlSht.Range("A" &xlSht.UsedRange.Rows.Count).End(xlUp).Row
复制代码
或者
lastRow = xlSht.Range("A65536").End(xlUp).Row
复制代码 谢谢楼上,以上代码经过测试,还是不行,不知有没有其他高手指教一下 终于知道是哪的问题了,xlUp是一个Excel定义的常量,PowerPoint中没有这个常量定义,所以需要先 Const xlUp As Long = -4162
复制代码
定义出来才能正常运行。或者直接用数值应该也行。
下面的代码亲测有效
[*]Option Explicit
[*]Sub cc()
[*]
[*]
[*]'以下代码提醒使用者先清空原有幻灯片
[*] '====================================================================================
[*] If ActivePresentation.Slides.Count <> 1 Then
[*] MsgBox ("请先清空除封面以外的所有幻灯片!!!")
[*] Exit Sub
[*] End If
[*]
[*] '以下代码导入excel数据源
[*] '====================================================================================
[*] Dim xlApp As Object
[*] Dim xlWBK As Object '定义工作薄对象
[*] Dim xlSht As Object '定义工作表对象
[*] Dim fPath As String '定义筹号文件路径
[*] Dim lastRow As Integer '定义最后一个筹号所在的行
[*] Dim arrID
[*] Const xlUp As Long = -4162
[*]
[*] '打开对话框选择文件并获取文件路径
[*] With Application.FileDialog(msoFileDialogFilePicker)
[*] If .Show = False Then Exit Sub
[*] fPath = .SelectedItems(1)
[*]
[*] End With
[*]
[*] '打开指定工作薄并把工作表筹号信息存为数组
[*] Set xlApp = CreateObject("Excel.Application")
[*] Set xlWBK = xlApp.Workbooks.Open(fPath)
[*] Set xlSht = xlWBK.Sheets("筹号")
[*]
[*]
[*]
[*] 'arrID = xlSht.Range("A2:A17") '用这句代码没问题,但换成下面的代码就出错了
[*] lastRow = xlSht.Cells(xlSht.Rows.Count, "A").End(xlUp).Row
[*] arrID = xlSht.Range("A2:A" & lastRow)
[*]
[*] xlWBK.Close False
[*]
[*] '释放对象
[*] Set xlApp = Nothing
[*] Set xlWBK = Nothing
[*] Set xlSht = Nothing
[*]
[*] End Sub
复制代码 你可以修改下:
Set xlApp = CreateObject("Excel.Application")
Set xlWBK = xlApp.Workbooks.Open(fPath)
Set xlSht = xlWBK.Worksheets("Sheet1")
xlSht.Activate
For i = 2 To 4
MsgBox xlSht.Cells(i, 1).Value
Next
或者再增加个for j=
我也是excel不太熟啊。 非常感谢楼上的解答,只是还是有一个问题: 定义常数中的-4162 是哪来的? 当然是查帮助文档咯~
问题解决了还请给评个分哈~~ 可能未引用,VBE——工具——引用Microsoft excel 12.0 object library astRow = xlSht.Range("A" & Xlsht.cells.Rows.Count).End(xlUp).Row
页:
[1]