Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

对象变量或WITH块变量未设置

chinasa  发表于:2014-08-01 14:50:43  
复制

'怀疑是没有指定父BOOK,但自己又不懂得指定。

'错误停在xlSheet2.Cells(4, 3) = xlSheet.Cells(1, 21)    这一句

'  当出错时,这句得到的工作表数量并不是我想要的工作簿,而是另外一个工作表的数量。gzbsl = ActiveWorkbook.Sheets.Count '判断当前工作簿有几个工作表,如果只有1个工作表,则没有“分箱数据”工作表。

    Dim xlApp As Excel.Application                                  'Excel应用程序对象
    Dim xlBook As Excel.Workbook                                    'Excel工作簿对象
    Dim xlBook2 As Excel.Workbook
    Dim xlSheet As Excel.Worksheet                                  'Excel工作表对象
    Dim xlSheet2 As Excel.Worksheet
    Set dbs = CurrentDb()
    Set wks = Workspaces(0)
    Set xlApp = CreateObject("Excel.Application")         '创建Excel应用程序对象
        xlApp.Visible = True                          '对象的可见性为“真”
    Set xlBook = xlApp.Workbooks.Open(Me.文本1)
   xlBook.Activate
   

      Dim gzbsl As Long
      gzbsl = ActiveWorkbook.Sheets.Count '判断当前工作簿有几个工作表,如果只有1个工作表,则没有“分箱数据”工作表。
         If gzbsl = 1 Then
             Set xlSheet = xlBook.Worksheets(1)                    '选择Sheet(1)
                If xlSheet.Name <> "明细" Then
                    MsgBox "出货明细只有一个工作表,工作表的名称必须为“明细”"
                    Exit Sub
                End If
        End If
        If gzbsl = 2 Then
           Set xlSheet = xlBook.Worksheets(2)                    '选择Sheet(1)
            If xlSheet.Name <> "分箱数据" Then
                MsgBox "出货明细有两个工作表,第二个工作表的名称必须为“分箱数据”"
                Exit Sub
             End If
        End If
   gzbhs = ActiveSheet.UsedRange.Rows.Count  '判断当前工作表使用了多少行
   Set xlBook2 = xlApp.Workbooks.Open(StrDtn2)

    Set xlSheet2 = xlBook2.Worksheets(1)                    '选择Sheet(1)
xlSheet2.Cells(4, 3) = xlSheet.Cells(1, 21)
xlSheet2.Cells(7, 3) = xlSheet.Cells(8, 20)

 

Top
chinasa 发表于:2014-08-01 15:07:57

现在错误出现在gzbsl = ActiveWorkbook.Sheets.Count,错误提示同上。

另外,并不是一直出错,第一次运行正常,第二次异常,第三次正常,第四次异常......



cspa 发表于:2014-08-01 17:28:20

改为:

xlBook.ActiveWorkbook.Sheets.Count

xlBook.ActiveSheet.UsedRange.Rows.Count 

试试



chinasa 发表于:2014-08-01 19:14:06

提示对象不支持该属性或方法



chinasa 发表于:2014-08-01 19:19:28

xlBook.ActiveSheet.UsedRange.Rows.Count 这句没报错



chinasa 发表于:2014-08-02 17:49:06
我只想统计指定工作簿的工作表个数,不一定要是活动工作簿。

cspa 发表于:2014-08-02 22:20:10

 ActiveWorkbook.Sheets.Count  改为:

xlBook.Sheets.Count

ActiveSheet.UsedRange.Rows.Count   改为:

xlBook.ActiveSheet.UsedRange.Rows.Count 

否则,你还会出错的。

你是从excel宏获取VBA代码的,但是宏代码是在你打开的工作簿中运行的,因此不用定义。但当你在excel外的access中运行代码时,你就必须告诉access应在那个excel中执行此代码,否则access就找不到代码运行的宿主程序了,就会报错。

 



chinasa 发表于:2014-08-04 13:22:58
万分感谢!

帕特泵 发表于:2019-03-15 08:56:12
论坛牛人多

总记录:8篇  页次:1/1 9 1 :