苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 2918|回复: 3

请教类似EXCEL宏代码的运行

[复制链接]

30

主题

45

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2022-11-9 09:29:19 | 显示全部楼层 |阅读模式
现在有这个需求:遍历的选择文件夹中所有excel文件,并把所有excel文件有值列实现自动列宽。

拟写代码如下:

                Public Sub SmFilePathSelectBox1_TextChanged(sender As Object,e As  System.EventArgs)
                        Dim ExlApp As Microsoft.Office.Interop.Excel.Application
                        Dim ExlBook As Microsoft.Office.Interop.Excel.Workbook
                        Dim ExlSheet As Microsoft.Office.Interop.Excel.Worksheet
                        Dim smFpb As SmFilePathSelectBox = sender
                        Dim diTop As New DirectoryInfo(smFpb.Value)        '未实现仅excel文件筛选
                        Dim Slb As SmListBox = Me.SmForm.Controls("SmListBox1")
                        For Each fi As Object In ditop.EnumerateFiles()
                                ExlBook = ExlApp.Workbooks.Open(fi.fullname)
                                ExlSheet = ExlBook.Worksheets(0)
                                ExlSheet...                                   '未实现自动列宽
                               
                                Slb.Items.add(fi.name)
                        Next
                End Sub


参考宏代码:

    Dim dataExcel As Object, myPath$, myFile$, WB As Workbook '这个$是相当于定义字符串
    Set dataExcel = CreateObject("Excel.application")
    myPath = ActiveSheet.Range("B2").Value    '把文件路径定义给变量,这里请自行更改,记得最后要加一个反斜杠
    myFile = Dir(myPath & "*.xls*")  '依次找寻指定路径中的*.x1s,或者x1sx文件
   
    Do While myFile <> ""   '当指定路径中有文件时进行循环
           
          If myFile <> ThisWorkbook.Name Then   '如果我们这个宏文件在需要处理的文件夹之中,这个判断就会跳过下面的操作
             Set WB = dataExcel.Workbooks.Open(myPath & myFile) '打开符合要求的文件
              Columns("A:N").Select
             Columns("A:N").EntireColumn.AutoFit
             WB.Save
             WB.Close 1 '保存文件直接关闭
         
        End If
        myFile = Dir '找寻下一个*.x15,或者x1sx文件

      Loop
         Set WB = Nothing   '释放变量内存


回复

使用道具 举报

22

主题

296

帖子

1876

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1876
QQ
发表于 2022-11-9 10:47:23 | 显示全部楼层
有了VBA的代码,照着抄即可。

ExlSheet.Columns("A:N").AutoFit()
回复

使用道具 举报

30

主题

45

帖子

191

积分

注册会员

Rank: 2

积分
191
 楼主| 发表于 2022-11-9 16:11:22 | 显示全部楼层
本帖最后由 苍风霁月 于 2022-11-9 16:15 编辑

                        Dim ExlApp As Microsoft.Office.Interop.Excel.Application
                        Dim ExlBook As Microsoft.Office.Interop.Excel.Workbook
                        Dim ExlSheet As Microsoft.Office.Interop.Excel.Worksheet
                        Dim smFpb As SmFilePathSelectBox = sender
                        Dim diTop As New DirectoryInfo(smFpb.Value)      
                        Dim Slb As SmListBox = Me.SmForm.Controls("SmListBox1")
                        ExlApp = New Microsoft.Office.Interop.Excel.Application
                        For Each fi As Object In ditop.EnumerateFiles()
                                Dim hzm As String
                                hzm=Path.GetExtension(fi.fullname)
                                If hzm =".xls" OrElse hzm = ".xlsx" Then
                                        ExlBook = ExlApp.Workbooks.Open(fi.fullname)
                                        ExlSheet = ExlBook.Worksheets(1)
                                        Slb.Items.add(fi.name)      '测试这句报错
                                        ExlSheet.Columns.AutoFit()
                                        ExlBook.save()
                                        ExlBook.Close()
                                End If
                        Next
                        ExlApp.Quit()
报错如图:
C:\Users\14188\Desktop\error.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

22

主题

296

帖子

1876

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1876
QQ
发表于 2022-11-9 16:15:16 | 显示全部楼层
试试这个
Dim Slb As SmListBox = Me.SmForm.ControlDictionary()("SmListBox1")
引用控件的方式错了。

Slb.Items.Add(Path.GetFileName(fi.FullName))

回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2024-7-7 21:01 , Processed in 0.071173 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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