明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1058|回复: 4

新手请教问题,用vb调用excel,第一次正常运行,第二次报错。谢谢

[复制链接]
发表于 2021-3-6 17:04:27 | 显示全部楼层 |阅读模式
本帖最后由 也许有一天 于 2021-3-6 20:38 编辑

Dim xlapp11 As New Excel.Application
Dim xlbook11 As Excel.Workbook
Dim jianche_XlsSheet_1 As Excel.Worksheet
Set xlapp11 = New Excel.Application

With xlapp11.Workbooks.Open(yuan_wenjian & jiancha_name_1 & "评估数据模板.XLSX")

        Set xlbook11 = xlapp11.Workbooks.Open(pinggu_wenjian)
        Set jianche_XlsSheet_1 = xlbook11.Worksheets(1)
        jianche_hang_1 = jianche_XlsSheet_1.Range("A65536").End(xlUp).Row              '查A列的上下限界,从列的开始往下查,
         Sheets(1).Select    ’**第二次这个地方报错**,报错内容为”远程服务器不存在或不能使用“
        Range("A4", Cells(jianche_hang_1, 10)).Select
        Selection.Copy .Worksheets(1).Range("A2")


        Set jianche_XlsSheet_2 = Excel.Application.ActiveWorkbook.Sheets(2)
             jianche_hang_2 = jianche_XlsSheet_2.Range("A65536").End(xlUp).Row              '查A列的上下限界,从列的开始往下查,
        Sheets(2).Select
        Range("A3", Cells(jianche_hang_2, 3)).Select              'TQI里程
        Selection.Copy .Worksheets(2).Range("A2")

        With xlapp11.Workbooks.Open(yuan_wenjian & jiancha_name_1 & "线路信息模板.XLSX")
                    Set xlbook12 = xlapp11.Workbooks.Open(xianlu_wenjian)
                    Set jianche_XlsSheet_1 = xlbook12.Worksheets(1)
                    jianche_hang_1 = jianche_XlsSheet_1.Range("H65536").End(xlUp).Row         
                    Sheets(1).Select
                    Range("A4", Cells(jianche_hang_1, 12)).Select                                  '复制"线路管界"
                    Selection.Copy .Worksheets(1).Range("A2")

                    Set jianche_XlsSheet_2 = Nothing
                    xlbook12.Close (True)

         End With
End With

    xlbook11.Close (True)
    xlapp11.Quit
    Set jianche_XlsSheet_1 = Nothing
    Set xlbook11 = Nothing
    Set xlapp11 = Nothing

 楼主| 发表于 2021-3-7 15:34:08 | 显示全部楼层
问题已解决,记录一下方法,以供他人参考。
Sheets(1).Select 改为xlapp11.Sheets(1).Select 。Cells(jianche_hang_1, 10)改为jianche_XlsSheet_1.Cells(jianche_hang_1, 10)。Selection.Copy .Worksheets(1).Range("A2")改为xlapp11.Selection.Copy .Worksheets(1).Range("A2")。后面的也是这么改。

评分

参与人数 1金钱 +10 收起 理由
mikewolf2k + 10 积极反馈

查看全部评分

发表于 2021-3-8 09:25:34 | 显示全部楼层
在EXCEL VBA环境内,默认了excelapp,所以可以直接sheets(1)。在VB里,没有这个默认,所以前面要加上excelapp。
另外select是录制时候产生的,对于程序来说,就没必要select了,这样快些。
 楼主| 发表于 2021-3-8 09:57:22 | 显示全部楼层
mikewolf2k 发表于 2021-3-8 09:25
在EXCEL VBA环境内,默认了excelapp,所以可以直接sheets(1)。在VB里,没有这个默认,所以前面要加上excela ...

受教了,非常感谢。
发表于 2023-6-10 22:38:10 | 显示全部楼层
遇到同样的问题,非常感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 21:26 , Processed in 0.166555 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表