VBA自動生成圖表

来源:http://www.cnblogs.com/William-Guozi/archive/2016/11/09/VBA_Excel.html
-Advertisement-
Play Games

'//此VBA為Excel巨集語言' ...


'//此VBA為Excel巨集語言'

  1  
  2 
  3 'Attribute VB_Name = "模塊1"
  4 Sub 製圖表_NBR_G()
  5 'Attribute 製圖表_NBR_G.VB_ProcData.VB_Invoke_Func = " \n14"
  6 '獲取當前文件目錄
  7 Dim CurPath
  8 CurPath = ActiveWorkbook.Path
  9 ' 製圖表_NBR_G 巨集
 10 
 11 '忽略相關彈窗信息
 12 Application.DisplayAlerts = False
 13 ' 獲取今天的時間
 14 Dim DateOfToday As String
 15 DateOfToday = Format$(Date, "yyyymmdd")
 16 'DateOfToday = 20161105
 17 '打開文本取數據
 18 Const ForReading = 1, ForWriting = 2, ForAppending = 8
 19 '格式:路由器IP 店鋪編號 型號
 20 Dim fso, file1, line, params, ip, number, mode
 21 Set fso = CreateObject("Scripting.FileSystemObject")
 22 Set file1 = fso.OpenTextFile(CurPath & "\NBR_G.txt", ForReading, False)
 23 '迴圈寫每一列數據
 24 Do While file1.AtEndOfStream <> True
 25 '讀取一行數據
 26 line = file1.ReadLine
 27 '格式:路由器IP 店鋪編號 型號
 28 params = Split(line)
 29 '獲取IP地址
 30 ip = params(0)
 31 '店鋪編號
 32 number = params(1)
 33 '獲取設備型號
 34 mode = params(2)
 35 
 36 '判斷同一型號設備添加數據結束,製圖標
 37 If number = "END" Then
 38 '刪除掉多餘字元串
 39 Cells.Replace What:="Number of active flows:", Replacement:="", LookAt:= _
 40 xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 41 ReplaceFormat:=False
 42 
 43 If mode = "1300G" Then
 44 '調整數據格式
 45 Range("B2:AI49").Select
 46 Selection.NumberFormatLocal = "0"
 47 '選擇區域生成圖表
 48 Range("A1:AI49").Select
 49 ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
 50 ActiveChart.SetSourceData Source:=Range("data!$A$1:$AI$49")
 51 End If
 52 
 53 If mode = "1000G" Then
 54 '調整數據格式
 55 Range("B2:I49").Select
 56 Selection.NumberFormatLocal = "0"
 57 '選擇區域生成圖表
 58 Range("A1:I49").Select
 59 ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
 60 ActiveChart.SetSourceData Source:=Range("data!$A$1:$I$49")
 61 End If
 62 
 63 If mode = "1500G" Then
 64 '調整數據格式
 65 Range("B2:B49").Select
 66 Selection.NumberFormatLocal = "0"
 67 '選擇區域生成圖表
 68 Range("A1:B49").Select
 69 ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
 70 ActiveChart.SetSourceData Source:=Range("data!$A$1:$B$49")
 71 End If
 72 
 73 If mode = "2000G" Then
 74 '調整數據格式
 75 Range("B2:C49").Select
 76 Selection.NumberFormatLocal = "0"
 77 '選擇區域生成圖表
 78 Range("A1:C49").Select
 79 ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
 80 ActiveChart.SetSourceData Source:=Range("data!$A$1:$C$49")
 81 End If
 82 
 83 ActiveChart.Axes(xlCategory).Select
 84 '調整圖表橫坐標度量值
 85 ActiveChart.Axes(xlCategory).MaximumScale = 1
 86 ActiveChart.Axes(xlCategory).MajorUnit = 0.05
 87 '調整圖表縱坐標起始值
 88 ActiveChart.Axes(xlValue).MinimumScale = 0
 89 ActiveChart.ClearToMatchStyle
 90 ActiveChart.ChartStyle = 245
 91 '修改圖表title
 92 ActiveChart.ChartTitle.Select
 93 Selection.Format.TextFrame2.TextRange.Characters.Text = mode & "-" & DateOfToday & "-Report"
 94 ActiveChart.ChartArea.Select
 95 '移動到新的chart里
 96 ActiveChart.Location Where:=xlLocationAsNewSheet
 97 End If
 98 
 99 
100 If ip <> "IP" Then
101 '激活data sheet
102 Worksheets("data").Activate
103 '從文本讀取數據寫到B2
104 
105 With ActiveSheet.QueryTables.Add(Connection:= _
106 "TEXT;" & CurPath & "\temp\R_" & ip & "_" & DateOfToday & ".txt", Destination:= _
107 Range("$B$2"))
108 .Name = "R_" & ip & "_" & DateOfToday & ""
109 .FieldNames = True
110 .RowNumbers = False
111 .FillAdjacentFormulas = False
112 .PreserveFormatting = True
113 .RefreshOnFileOpen = False
114 .RefreshStyle = xlInsertDeleteCells
115 .SavePassword = False
116 .SaveData = True
117 .AdjustColumnWidth = False
118 .RefreshPeriod = 0
119 .TextFilePromptOnRefresh = False
120 .TextFilePlatform = 936
121 .TextFileStartRow = 1
122 .TextFileParseType = xlDelimited
123 .TextFileTextQualifier = xlTextQualifierDoubleQuote
124 .TextFileConsecutiveDelimiter = False
125 .TextFileTabDelimiter = True
126 .TextFileSemicolonDelimiter = False
127 .TextFileCommaDelimiter = False
128 .TextFileSpaceDelimiter = False
129 .TextFileColumnDataTypes = Array(1, 1, 1, 1)
130 .TextFileTrailingMinusNumbers = True
131 .Refresh BackgroundQuery:=False
132 End With
133 '將店鋪編號寫到B1
134 Range("B1").Select
135 ActiveCell.FormulaR1C1 = number
136 End If
137 
138 Loop
139 '將生成圖標另存為本目錄下的excel
140 ChDir CurPath
141 ActiveWorkbook.SaveAs Filename:=CurPath & "\NBR_G_Report_" & DateOfToday & ".xlsx", _
142 FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
143 
144 End Sub
145 
146  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 感覺好久沒有寫博客了, 這幾天有點小忙, 接下來會更忙, 索性就先寫一篇吧. 後面估計會有更長的一段時間不會更新博客了. 廢話不多說, 先上菜. 一、示例 1. 先建類, 類的名稱與讀取的表名並沒有什麼關係,可以不一樣, 然後就是其中的屬性大小寫不限 2. 測試代碼 接下來, 可以進入Dapper的 ...
  • typeof: 是運算符,獲得某一類型的 System.Type 對象。 Int32 t = new Int32(); Type t = typeof(int); GetType: 是方法,獲取當前實例的類型。 int i = 10; Console.WriteLine(i.GetType()); ...
  • 對於一些需要及時反應的系統來說,代碼執行效率的調優則顯得尤為重要,正好結合今天自己遇到的問題,說明以下幾點: 1.避免迴圈語句(for,foreach)的嵌套使用 2.避免使用一些異常處理語句(tyr..catch..finally) 3.需對資料庫執行多次增刪改查時,請使用StringBuilde ...
  • 在.NET Framework框架中,程式集是重用、安全性以及版本控制的最小單元。程式集的定義為:程式集是一個或多個類型定義文件及資源文件的集合。程式集主要包含:PE/COFF,CLR頭,元數據,清單,CIL代碼,元數據。 PE/COFF文件是由工具生成的,表示文件的邏輯分組。PE文件包含“清單”數 ...
  • 一,Get請求 1,無參數Get請求,跟平常寫ajax請求一樣,並無什麼差別 $.ajax({ url: '.../api/User/UserVerify, type: 'get', success: function (json) { alert(json); }, error: function ...
  • 嘿嘿,請不要說我是偷取,我只是借鑒一下。。 String 對象是不可改變的。每次使用 System.String 類中的方法之一時,都要在記憶體中創建一個新的字元串 對象,這就需要為該新對象分配新的空間。在需要對字元串執行重覆修改的情況下,與創建新的 String 對象相關的系統開銷可能會非常昂貴。如 ...
  • ::執行效果 ::日誌文件內容 ...
  • 輸出: 輸出: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...