主頁 > 軟體工程 > 求VBA高手指點

求VBA高手指點

2020-09-11 20:38:17 軟體工程

各位VBA的高手,
   我在撰寫一個資料處理的VBA,遇到一個問題,不知如何解決,請高手幫忙看一下代碼那里有問題?

資料是機器自動產出匯總一天的資料,但格式上不好處理這些資料,所以我把這些專案分成不同的列,運行一個VBA去整理這些資料,資料在附件中,資料從3:001 ~ 4:001:0為一組資料,一份檔案中重復幾百個相同的資料,要把它變成橫向的,這一組資料要變成一行,下面的一組資料要放在第二行,以此類推。相似的檔案有100多份,全部要匯總到一張表里處理

代碼要怎么修改才能讓每一組資料在一行,并且一份檔案中的所有資料都出來?

我這份代碼,運行完了,每份檔案只留下了最后一組資料。

3:001:排料圖的ID         8130布-抱枕A3件.cut
3:002:排料圖的長度                      1.06
3:003:排料圖的寬度                      1.25
3:004:部件數                               9
3:005:剪裁時期                    2019/11/01
3:006:剪裁開始時間                   8:21:27
3:007:剪裁結束時間                   8:23:24
3:008:剪裁時間                       0:01:57
3:009:平均剪裁速度                     10.83
3:010:剪裁距離                         14.62
3:011:刀片上升轉換角度                140.00
3:012:刀具轉換的角度                   15.00
3:013:剪裁速度(高速)                    45
3:014:剪裁速度(低速)                    43
3:027:剪裁時間22                     0:01:53
4:001:0                                    5
3:001:排料圖的ID            8130布-抱枕B.cut
3:002:排料圖的長度                      0.49
3:003:排料圖的寬度                      1.01
3:004:部件數                               3
3:005:剪裁時期                    2019/11/01
3:006:剪裁開始時間                   8:28:16
3:007:剪裁結束時間                   8:29:03
3:008:剪裁時間                       0:00:47
3:009:平均剪裁速度                      9.87
3:010:剪裁距離                          4.93
3:011:刀片上升轉換角度                140.00
3:012:刀具轉換的角度                   15.00
3:013:剪裁速度(高速)                    45
3:014:剪裁速度(低速)                    43
3:027:剪裁時間22                     0:00:44
4:001:0                                    5
3:001:排料圖的ID          KF2033布-1.5右.cut
3:002:排料圖的長度                      3.92
3:003:排料圖的寬度                      1.40
3:004:部件數                              20
3:005:剪裁時期                    2019/11/01
3:006:剪裁開始時間                   8:30:01
3:007:剪裁結束時間                   8:36:37
3:008:剪裁時間                       0:06:36
3:009:平均剪裁速度                      9.29
3:010:剪裁距離                         40.08
3:011:刀片上升轉換角度                140.00
3:012:刀具轉換的角度                   15.00
3:013:剪裁速度(高速)                    45
3:014:剪裁速度(低速)                    43
3:027:剪裁時間22                     0:06:19
4:001:0                                    5

下面是VBA的代碼:

Sub TEST()

Dim row As Long
row = 4

Range("A4:Q30000").Clear


Dim filePath As String
'filePath = "D:\Marker report"

Sheet1.Select

filePath = Sheet1.Range("F2").Value

Dim fs As New FileSystemObject

Dim f As File
Dim fo As Folder
If filePath <> "" Then

    Set fo = fs.GetFolder(filePath)
    
    Dim text As TextStream
    
    For Each f In fo.Files
    
       Sheet1.Range("A" & row).Value = f.Name
       
        Set text = f.OpenAsTextStream()
        
       
        While (Not text.AtEndOfLine)
       
         
         Str1 = text.ReadLine()
            
           
            If Left(Str1, 12) = "3:001:排料圖的ID" Then
            
                Sheet1.Range("B" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
            
            If Left(Str1, 12) = "3:002:排料圖的長度" Then
            
                Sheet1.Range("C" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
            
            If Left(Str1, 12) = "3:003:排料圖的寬度" Then
            
                 Sheet1.Range("D" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                 
                 End If
                 
            If Left(Str1, 9) = "3:004:部件數" Then
            
                Sheet1.Range("E" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
            If Left(Str1, 10) = "3:005:剪裁時期" Then
            
                Sheet1.Range("F" & row).Value = Trim(Right(Str1, Len(Str1) - InStr(1, Str1, " ")))
                
                End If
               
             If Left(Str1, 12) = "3:006:剪裁開始時間" Then
            
                Sheet1.Range("G" & row).Value = Trim(Right(Str1, Len(Str1) - InStr(1, Str1, " ")))
                
                End If
               
              If Left(Str1, 12) = "3:007:剪裁結束時間" Then
            
                Sheet1.Range("H" & row).Value = Trim(Right(Str1, Len(Str1) - InStr(1, Str1, " ")))
                
                End If
               
              If Left(Str1, 10) = "3:008:剪裁時間" Then
            
                Sheet1.Range("I" & row).Value = Trim(Right(Str1, Len(Str1) - InStr(1, Str1, " ")))
                
                End If
              
              If Left(Str1, 12) = "3:009:平均剪裁速度" Then
            
                Sheet1.Range("J" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                                               
                End If
               
              If Left(Str1, 10) = "3:010:剪裁距離" Then
            
                Sheet1.Range("K" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
            
              If Left(Str1, 14) = "3:011:刀片上升轉換角度" Then
            
                Sheet1.Range("L" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
               
              If Left(Str1, 13) = "3:012:刀具轉換的角度" Then
            
                Sheet1.Range("M" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
                
              If Left(Str1, 14) = "3:013:剪裁速度(高速)" Then
            
                Sheet1.Range("N" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                
                End If
               
              If Left(Str1, 14) = "3:014:剪裁速度(低速)" Then
            
                Sheet1.Range("O" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                                   
                End If
                
            If Left(Str1, 12) = "3:027:剪裁時間22" Then
            
                Sheet1.Range("P" & row).Value = Trim(Right(Str1, Len(Str1) - InStr(1, Str1, " ")))
                                   
                End If
                
            If Left(Str1, 7) = "4:001:0" Then
            
                Sheet1.Range("Q" & row).Value = Right(Str1, Len(Str1) - InStr(1, Str1, " "))
                                   
                End If
                                          
        Wend

   row = row + 1
    
    Next
    
    
    
nextFile:

End If
        

Range("C4:C30000").Select
Selection.NumberFormat = "0.00"

Range("D4:D30000").Select
Selection.NumberFormat = "0.00"

Range("E4:E30000").Select
Selection.NumberFormat = "0"

Range("F4:F30000").Select
Selection.NumberFormat = "YYYY/MM/DD"

Range("G4:G30000").Select
Selection.NumberFormat = "hh:mm:ss"

Range("H4:H30000").Select
Selection.NumberFormat = "hh:mm:ss"

Range("I4:I30000").Select
Selection.NumberFormat = "hh:mm:ss"

Range("J4:J30000").Select
Selection.NumberFormat = "0.00"

Range("K4:K30000").Select
Selection.NumberFormat = "0.00"

Range("L4:L30000").Select
Selection.NumberFormat = "0.00"

Range("M4:M30000").Select
Selection.NumberFormat = "0.00"

Range("N4:N30000").Select
Selection.NumberFormat = "0"

Range("O4:O30000").Select
Selection.NumberFormat = "0"

Range("p4:P30000").Select
Selection.NumberFormat = "hh:mm:ss"

Range("Q4:Q30000").Select
Selection.NumberFormat = "0"



Range("R4:S1000").Clear

Range("A3:A3").Select

MsgBox "The folder's Marker Reports Run Finished檔案夾中的所有檔案已經運行完成"

End Sub

uj5u.com熱心網友回復:

附件檔案怎么上傳?

uj5u.com熱心網友回復:

wm0411666 
你發我檔案看下吧

uj5u.com熱心網友回復:

有檔案可以看看不?

uj5u.com熱心網友回復:

原代碼
   End If
                                         
        Wend

   row = row + 1
    
    Next
改成
   End If

   row = row + 1
                                         
        Wend
    
    Next

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/7355.html

標籤:VBA

上一篇:VB

下一篇:VBA 代碼 運行 卡死

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more