找回密码
 立即注册
搜索

请教高手帮忙看看这句VBA代码出了什么问题!

8
回复
981
查看
[复制链接]

2

主题

9

帖子

41

幻币

一流武者

Rank: 3Rank: 3

积分
276
2017-2-8 12:25:52 显示全部楼层 |阅读模式
正在开发个简单的VBA的PPT:
有一个表,有一列ID,一行一个,几千行,现在要把excel表上的ID放到PPT上,每页PPT放10个ID,简单的对齐排版,研究了一天,基本实现了想要的效果,但是遇到了一个问题一直想不通,所以发上来看有没有高手能帮忙指教一下:


以下为出错部分代码
代码“lastRow = xlSht.Range("A" & Rows.Count).End(xlUp).Row” 出错,但在excel里面运行是没问题的
PPT学习论坛
回复

使用道具 举报

0

主题

4

帖子

34

幻币

一流武者

Rank: 3Rank: 3

积分
242
QQ
2017-2-8 13:28:33 显示全部楼层
    lastRow = xlSht.Range("A" &xlSht.UsedRange.Rows.Count).End(xlUp).Row

复制代码
或者
    lastRow = xlSht.Range("A65536").End(xlUp).Row

复制代码
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

8

帖子

19

幻币

江湖少侠

Rank: 2

积分
135
QQ
2017-2-8 14:18:56 显示全部楼层
谢谢楼上,以上代码经过测试,还是不行,不知有没有其他高手指教一下
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

6

帖子

11

幻币

江湖少侠

Rank: 2

积分
132
QQ
2017-2-8 14:23:01 显示全部楼层
终于知道是哪的问题了,xlUp是一个Excel定义的常量,PowerPoint中没有这个常量定义,所以需要先
    Const xlUp As Long = -4162

复制代码
定义出来才能正常运行。或者直接用数值应该也行。
下面的代码亲测有效

  • Option Explicit
  • Sub cc()


  • '以下代码提醒使用者先清空原有幻灯片
  • '====================================================================================
  • If ActivePresentation.Slides.Count <> 1 Then
  •      MsgBox (&quot;请先清空除封面以外的所有幻灯片!!!&quot;)
  •      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(&quot;Excel.Application&quot;)
  • Set xlWBK = xlApp.Workbooks.Open(fPath)
  • Set xlSht = xlWBK.Sheets(&quot;筹号&quot;)



  • 'arrID = xlSht.Range(&quot;A2:A17&quot;)       '用这句代码没问题,但换成下面的代码就出错了
  • lastRow = xlSht.Cells(xlSht.Rows.Count, &quot;A&quot;).End(xlUp).Row
  • arrID = xlSht.Range(&quot;A2:A&quot; & lastRow)

  • xlWBK.Close False

  • '释放对象
  • Set xlApp = Nothing
  • Set xlWBK = Nothing
  • Set xlSht = Nothing

  • End Sub

复制代码
PPT学习论坛
回复 支持 反对

使用道具 举报

4

主题

10

帖子

43

幻币

江湖少侠

Rank: 2

积分
104
QQ
2017-2-8 14:37:53 显示全部楼层
你可以修改下:
    Set xlApp = CreateObject(&quot;Excel.Application&quot;)
    Set xlWBK = xlApp.Workbooks.Open(fPath)
    Set xlSht = xlWBK.Worksheets(&quot;Sheet1&quot;)
    xlSht.Activate
    For i = 2 To 4
    MsgBox xlSht.Cells(i, 1).Value
    Next
或者再增加个for j=
我也是excel不太熟啊。
PPT学习论坛
回复 支持 反对

使用道具 举报

0

主题

7

帖子

57

幻币

一流武者

Rank: 3Rank: 3

积分
200
QQ
2017-2-8 14:54:39 显示全部楼层
非常感谢楼上的解答,只是还是有一个问题: 定义常数中的-4162 是哪来的?
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

6

帖子

66

幻币

一流武者

Rank: 3Rank: 3

积分
272
QQ
2017-2-8 15:15:34 显示全部楼层
当然是查帮助文档咯~
195257lqt6ez6yoeeez1r9.png
问题解决了还请给评个分哈~~
PPT学习论坛
回复 支持 反对

使用道具 举报

2

主题

9

帖子

75

幻币

一流武者

Rank: 3Rank: 3

积分
233
QQ
2017-2-8 15:36:16 显示全部楼层
可能未引用,VBE——工具——引用Microsoft excel 12.0 object library
PPT学习论坛
回复 支持 反对

使用道具 举报

1

主题

4

帖子

19

幻币

江湖少侠

Rank: 2

积分
188
QQ
2017-2-8 16:39:17 显示全部楼层
astRow = xlSht.Range(&quot;A&quot; & Xlsht.cells.Rows.Count).End(xlUp).Row
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册