阳光石油网|石油技术交流|石油人论坛

 找回密码
 欢迎注册
查看: 8348|回复: 18

[VBA] 用VBA实现文本文件批量导入Excel

[复制链接]
  • TA的每日心情
    开心
    2012-3-19 10:42
  • 签到天数: 43 天

    [LV.5]常住居民I

    发表于 2011-12-24 14:38:16 | 显示全部楼层 |阅读模式

    马上注册,下载丰富资料,享用更多功能,让你轻松玩转阳光石油论坛。

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

    x
    本帖最后由 twtjerdf 于 2011-12-29 12:58 编辑

    Private Sub 导入文本数据_Click()
    'If Me.TextBox3 = "" Then MsgBox "请选择保存路径!", 64, "提示": Exit Sub '没有存放路径则提示且退出程序
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim MyRng As Range
    Dim i As Integer
        Dim j As Integer
    Set aimbook = Workbooks.Add(xlWorksheet)
    Dim fd As FileDialog, Item As Integer
          
        '如果选择了文件
    If fd.Show = -1 Then
            '遍历所有文件
    For Item = 1 To fd.SelectedItems.Count
            '逐个打开文件
             Workbooks.Open (fd.SelectedItems(Item))
                  
             ActiveWorkbook.Sheets.Select
               Columns("A:A").Select
                Application.CutCopyMode = False
                
      If (CheckBox6.Value) Then      '忽略连续分隔
                
        If (CheckBox2.Value) Then   '空格分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
        If (CheckBox1.Value) Then    'TAB 键分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
        If (CheckBox3.Value) Then      '逗号分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
         If (CheckBox4.Value) Then      '分号分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
         End If
                        
         If (CheckBox5.Value) Then    '自定义分隔
         
                Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False     '消除所有空格
               
                 Selection.Replace What:=Me.TextBox1.Value, Replacement:=" ", LookAt:=xlPart, _
               SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False     ' 自定义分隔
               
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
      Else     '不忽略连续分隔

       If (CheckBox2.Value) Then   '空格分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
        If (CheckBox1.Value) Then    'TAB 键分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
        If (CheckBox3.Value) Then      '逗号分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If
       
         If (CheckBox4.Value) Then      '分号分隔
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
         End If
                        
         If (CheckBox5.Value) Then     '自定义分隔
         
                 Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False     '消除所有空格
               
                 Selection.Replace What:=Me.TextBox1.Value, Replacement:=" ", LookAt:=xlPart, _
               SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False   ' 自定义分隔
               
                Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
        End If

      End If
            Sheets.Move Before:=aimbook.Sheets(1)
    Next
    Else
            MsgBox "未发现文件"
    End If
      aimbook.SaveAs "导入数据"
      'Shell "EXPLORER.EXE " & Me.TextBox3, vbNormalFocus    '打开存放新工作簿的文件夹
    End Sub

    VBA界面设计

    VBA界面设计

    评分

    参与人数 1鲜花 +2 阳光币 +5 贡献 +3 收起 理由
    justbetoo + 2 + 5 + 3 赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2024-5-1 22:00
  • 签到天数: 455 天

    [LV.9]以坛为家II

    发表于 2011-12-24 14:40:50 | 显示全部楼层
    楼主的资料很给力
  • TA的每日心情
    开心
    2012-3-19 10:42
  • 签到天数: 43 天

    [LV.5]常住居民I

     楼主| 发表于 2011-12-24 14:40:57 | 显示全部楼层
    本帖最后由 twtjerdf 于 2011-12-24 14:45 编辑

    亲测在Excel2007中可用!将文本文件批量导入Excel是实现数据批量处理的第一步,为地质数据和测井数据的处理打下基础!
  • TA的每日心情
    擦汗
    2014-8-11 18:17
  • 签到天数: 336 天

    [LV.8]以坛为家I

    发表于 2011-12-24 14:44:08 | 显示全部楼层
    如何使用啊
  • TA的每日心情
    开心
    2012-3-19 10:42
  • 签到天数: 43 天

    [LV.5]常住居民I

     楼主| 发表于 2011-12-24 14:49:51 | 显示全部楼层
    本帖最后由 twtjerdf 于 2011-12-24 14:52 编辑
    一生的爱 发表于 2011-12-24 14:44
    如何使用啊

    首先,你得须要使用这个技术;
    其次,这个程序要设计界面,如图所示;
    最后,你可以通过学习源代码,稍微改之就可以为已所用了!
    VBA的精华就是批量处理,通过批量导入数据或者导出数据,从而理解批量,快速的数据处理思想!
  • TA的每日心情
    擦汗
    2012-7-25 09:23
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2011-12-24 17:51:03 | 显示全部楼层
    看不懂呀,lz,,,,,,
  • TA的每日心情
    开心
    2012-3-19 10:42
  • 签到天数: 43 天

    [LV.5]常住居民I

     楼主| 发表于 2011-12-24 17:55:10 | 显示全部楼层
    wangshaoqi 发表于 2011-12-24 17:51
    看不懂呀,lz,,,,,,

    呵呵,建议先看看VBA的书!
  • TA的每日心情
    擦汗
    2012-7-25 09:23
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2011-12-24 18:09:41 | 显示全部楼层
    本帖最后由 wangshaoqi 于 2011-12-24 18:09 编辑
    twtjerdf 发表于 2011-12-24 17:55
    呵呵,建议先看看VBA的书!


    VBA ,指计算机二级VB?没有学过呀
  • TA的每日心情
    开心
    2012-3-19 10:42
  • 签到天数: 43 天

    [LV.5]常住居民I

     楼主| 发表于 2011-12-24 18:12:21 | 显示全部楼层
    wangshaoqi 发表于 2011-12-24 18:09
    VBA ,指计算机二级VB?没有学过呀

    不是的,指的是Excel里面的宏,但和VB比较像,专门用来批量处理数据的!
  • TA的每日心情
    擦汗
    2012-7-25 09:23
  • 签到天数: 138 天

    [LV.7]常住居民III

    发表于 2011-12-24 18:19:05 | 显示全部楼层
    twtjerdf 发表于 2011-12-24 18:12
    不是的,指的是Excel里面的宏,但和VB比较像,专门用来批量处理数据的!

    没有学过VB,但想学一下,
    明年考二级VB,我加你QQ吧
    您需要登录后才可以回帖 登录 | 欢迎注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|阳光石油网 ( 鲁ICP备2021003870号-1 )

    GMT+8, 2024-5-18 21:11 , Processed in 0.104781 second(s), 30 queries .

    Powered by Discuz! X3.4 Licensed

    Copyright © 2001-2021, Tencent Cloud.

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