如果我忘了来时的路 2022-11-29 08:36 采纳率: 100%
浏览 56
已结题

VBA跨工作簿获取目标工作簿内已有数据的列号

在不打开工作簿的情况下在A工作簿内获取目标工作簿sheet1已有数据的列号。

  • 写回答

4条回答 默认 最新

  • weixin_43321370 2022-11-29 14:19
    关注

    常规实现思路是障眼法,工作簿文件被打开了,但是用户看不到而已。代码如下。

    Sub CSDNTest()
    
        Dim ExcelPath, ExcelName, ExcelShtName As String
        Dim shtExistFlag As Boolean
        Dim recorder As Integer
        recorder = 1
        
        ExcelPath = ActiveWorkbook.Path                 'A工作簿路径(默认与当前文件同目录)
        ExcelName = "A.xlsx"                            'A工作簿名(默认为A.xlsx)
        ExcelShtName = "sheet1"                         'A工作簿sheet名(默认为sheet1)
        
        '防止找不到A工作簿
        If Dir(ExcelPath & "\" & ExcelName) = "" Then
            MsgBox "The Excel file does not exist!"
            Exit Sub
        End If
        '若找到A工作簿,打开文件。这种方法工作簿文件被打开了,但是用户看不到。
        Set Excelwk = Workbooks.Open(ExcelPath & "\" & ExcelName)
        
        '防止找不到sheet1
        On Error Resume Next
        Set Excelsht = Excelwk.Worksheets(ExcelShtName)
        shtExistFlag = IIf(Excelsht Is Nothing, False, True)
        Err.Clear
        On Error GoTo 0
        If shtExistFlag = False Then
            MsgBox "The Excel file's sheetName does not exist!"
            Exit Sub
        End If
        
        '开始循环查找有数据的列号
        
        For i = 1 To Excelsht.Columns.Count
                If Application.WorksheetFunction.CountA(ActiveSheet.Columns(i)) <> 0 Then
                '将有数据的列号存放在当前文件的sheet1的A列中
                Sheet1.Cells(recorder, 1) = Split(Columns(i).Address, "$")(2) '将数字形式的列号转为字母形式
                recorder = recorder + 1
            End If
        Next
        '关闭文件
        Excelwk.Close
        
    End Sub
    
    

    运行结果

    img

    A.xlsx中的数据

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月29日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。