1. 程式人生 > >Excel讀取某一列的宏代碼VBA代碼源碼及解說(詳盡版)

Excel讀取某一列的宏代碼VBA代碼源碼及解說(詳盡版)

vba 宏 excel 批量操作

背景

業務需要依據詳細設計文檔編寫所有對應的頁面


問題

工作量大,11張大表(幾十上百字段)時間緊 3天完成


核心

有完整的表設計,可通過excel手動編輯完成。


新問題

普通字段沒問題,可增加了字典後工作量驟然提升,這種特殊性讓工作的難度和體量都給手工操作Excel帶來了挑戰


解決方案

通過代碼實現手工操作excel的工作,也就是編寫VBA宏

Sub detailPage()
‘
‘ 沫沫金
‘ 生成居民健康檔案瀏覽器頁面,時間: 2017/08/17
‘
Dim tri As Integer, td, tableName, nameC, valC, dicC, saveC As String
‘
‘配置區域:Config
‘
‘三列一行控制器記錄儀
tri = 1
‘表名列
tableName = LCase(Cells(1, "D"))
‘label列
nameC = "A"
‘值列
valC = "B"
‘字典列
dicC = "C"
‘存儲列
saveC = "F"

For n = 1 To [A65536].End(xlUp).Row
    ‘初始行內容
    td = ""
    ‘三列一行
    If tri = 1 Then td = "<tr>"
    ‘字段說明
    td = td + "<td width=‘‘33%‘‘><h3><i class=‘‘ico ico_23‘‘></i>" + Cells(n, nameC)
    ‘字典字段特殊處理
    If Cells(n, dicC) = "" Then
    td = td + "</h3><p>${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}</p></td>"
    Else
    td = td + "</h3><p><dic:dic type=""" + Cells(n, dicC) + """ value=""${sessionScope.data." + tableName + "[index]." + LCase(Cells(n, valC)) + "}"" /></p></td>"
    End If
    ‘三列一行結束處理
    If tri = 3 Then td = td + "</tr>"
    ‘拼接一行,扔到空閑列統一拷貝
    Cells(n, saveC) = td
    ‘當前列記錄
    tri = tri + 1
    ‘三列一行控制器
    If tri > 3 Then tri = 1
Next n

MsgBox "恭喜你,詳細信息生成成功。"
‘
End Sub

啟用宏,拷貝到代碼區運行即可看到拼接結果。完全自定義拼接格式,百分百解放雙手的工具。


下面,給java開發同伴重點說明下

if判斷 條件不用圓括號
條件判斷等於一個等號
格式排版必須控制好
沒有分號


以上,運行說明,在當前的sheet頁Alt+F8運行上面的宏。生成完成會收到友情提醒,好了,愉快的VBA結束。


by.沫沫金

於2017-08-17 西安

Excel讀取某一列的宏代碼VBA代碼源碼及解說(詳盡版)