2023-03-09

代码A,下面代码实现了:标红复制的数据,创建一个新的sheet,把数据放到新sheet里面。同时生成一个和当天excel同名的txt,把新sheet中的数据放到txt中。

Sub File_Loop_Example()

'Excel VBA code to loop through files in a folder with Excel VBA

Dim MyFolder As String, MyFile As String

    '声明变量

    Dim ws As Worksheet

    Dim wsNew As Worksheet

    Dim lastRow As Long

    Dim i As Long

    Dim j As Long

    Dim k As Long


    '----save

    Dim wb As Workbook

    Dim fso As Object

    Dim txtFile As Object

    Dim filePath As String

    Dim fileName As String

    'Dim lastRow As Long

    Dim lastCol As Long

    Dim i_2 As Long

    Dim j_2 As Long



'Opens a file dialog box for user to select a folder

With Application.FileDialog(msoFileDialogFolderPicker)

    .AllowMultiSelect = False

    .Show

    MyFolder = .SelectedItems(1)

    Err.Clear

End With

'Handle Errors

If Err.Number <> 0 Then

    MyFolder = ""

End If

'Dir function returns the first file name that matches pathname

MyFile = Dir(MyFolder & "\", vbReadOnly)

'Do while there is still a file name in the MyFile variable

Do While MyFile <> ""

    'Opens the file and assigns to the wbk variable for future use

    Workbooks.Open fileName:=MyFolder & "\" & MyFile


    'Do something with your workbook here

    Sheets("EEPprogram_Temp").Activate

'设置工作表对象为当前激活的sheet

    Set ws = ActiveSheet


    '获取最后一行的行号

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row


    '创建一个新的sheet,命名为result,放在最后一个sheet之后

    Set wsNew = Worksheets.Add(After:=Worksheets(Worksheets.Count))

    wsNew.Name = "result"


    '初始化新sheet中的行号为1

    k = 1


    '遍历每一行

    For i = 1 To lastRow


        '遍历每一列,从第一列到倒数第五列

        For j = 1 To ws.Columns.Count - 4


            '判断是否找到了5个连续的单元格,内容分别为SYNC,DEV_ADDR,REG_ADDR,DATA,CRC

            If ws.Cells(i, j) = "SYNC" And _

              ws.Cells(i, j + 1) = "DEV_ADDR" And _

              ws.Cells(i, j + 2) = "REG_ADDR" And _

              ws.Cells(i, j + 3) = "DATA" And _

              ws.Cells(i, j + 4) = "CRC" Then


                '如果找到了,则把这5个单元格的内容复制下来,并按顺序放到新sheet里面(假设从A列开始)

                ws.Range(ws.Cells(i, j), ws.Cells(i, j + 4)).Interior.Color = RGB(255, 0, 0)

                ws.Range(ws.Cells(i + 1, j), ws.Cells(i + 1, j + 4)).Copy Destination:=wsNew.Range("A" & k)


                '更新新sheet中的行号为下一行(k+1)

                k = k + 1


                '退出内层循环,继续外层循环

                Exit For


            End If


        Next j


    Next i


    '----------- save the result sheet and creat a txt

        '设置工作簿对象为当前激活的工作簿

    Set wb = ActiveWorkbook


    '设置工作表对象为result sheet(假设已经存在)

    Set ws = wb.Worksheets("result")


    '获取最后一行和最后一列的编号(假设数据从A1开始)

    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column


    '创建FileSystemObject对象,用于操作文件和文件夹

    Set fso = CreateObject("Scripting.FileSystemObject")


    '获取当前工作簿所在的文件夹路径(不包含最后的反斜杠)

    filePath = fso.GetParentFolderName(wb.FullName)


    '获取当前工作簿的文件名(不包含扩展名)

    fileName = fso.GetBaseName(wb.FullName)


    '创建一个文本文件,路径和选择的文件夹相同,文本文件的名字和当前操作的excel文件名字相同(如果已经存在,则覆盖)

    Set txtFile = fso.CreateTextFile(filePath & "\" & fileName & ".txt", True)


    '遍历每一行数据(假设每个单元格都是16进制数据)

    For i_2 = 1 To lastRow


        '遍历每一列数据,用空格分隔,并写入文本文件中(不换行)

        For j_2 = 1 To lastCol


            txtFile.Write ws.Cells(i_2, j_2) & " "


        Next j_2


        '写入换行符,结束当前行数据的写入

        txtFile.WriteLine


    Next i_2


    '关闭文本文件对象,并释放资源

    txtFile.Close


    Set fso = Nothing


    'Close workbook without saving changes (change this if you want to save changes)

    'Workbooks(MyFile).Close SaveChanges:=False


    'Dir function returns the next file name that matches pathname

    MyFile = Dir()

Loop

End Sub

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,183评论 6 516
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,850评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,766评论 0 361
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,854评论 1 299
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,871评论 6 398
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,457评论 1 311
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,999评论 3 422
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,914评论 0 277
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,465评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,543评论 3 342
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,675评论 1 353
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,354评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,029评论 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,514评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,616评论 1 274
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,091评论 3 378
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,685评论 2 360

推荐阅读更多精彩内容