劉凌峰,劉凌峰講師,劉凌峰聯(lián)系方式,劉凌峰培訓(xùn)師-【中華講師網(wǎng)】
    46
    鮮花排名
    0
    鮮花數(shù)量
    掃一掃加我微信
    劉凌峰:如何實現(xiàn)EXCEL離線模板收集數(shù)據(jù)
    2016-01-20 60167

    微軟金牌OFFICE講師劉凌峰教你如何實現(xiàn)EXCEL離線模板收集數(shù)據(jù)

    一、背景:
      
    許多客戶在使用系統(tǒng)時,可能需要大范圍收集資料。但可能受限于每個客戶并不是都能登錄系統(tǒng),如外部供應(yīng)商,或只是臨時性的需要填寫數(shù)據(jù)并不能要求每個用戶均安裝客端。這時,離線模板的作用就開始生效了。
    二、定義:
      
    離線模板是指用戶在填寫數(shù)據(jù)時不需要登錄現(xiàn)有系統(tǒng),在普通EXCEL環(huán)境下就能填寫,填寫完畢,可以通過一定的技術(shù)手段將數(shù)據(jù)導(dǎo)入到系統(tǒng)中。
    三、實現(xiàn)過程:
       1
    、在系統(tǒng)中定義標準模板,并將模板單獨另存為EXCEL文件。
       2
    、通過公式引用 的方式,將模板中的表單數(shù)據(jù)轉(zhuǎn)換為清單數(shù)據(jù),并指定區(qū)域名稱。
       3
    、保護工作表相關(guān)區(qū)域,將文件分發(fā)給所有用戶。用戶填寫數(shù)據(jù),收回多個EXCEL文件。
       4
    、縮寫導(dǎo)入數(shù)據(jù)VBA代碼,將多個EXCEL文件中的清單收集到另一個系統(tǒng)模板中。
    四、參考代碼:
      Sub Import_data()
    On Error Resume Next

    Dim Fcount, Rcount As Long
    '----------------------
    判斷是否有數(shù)據(jù)
    Worksheets("
    本周完成情況").Activate
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    Worksheets("
    下周計劃").Activate
    Rows("2:2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
     '------------------------
    打開文件
    Call openfile
    '---------------------
    計算出總共有幾個文件需要導(dǎo)入
    Worksheets("
    參數(shù)").Activate
    Worksheets("
    參數(shù)").Range("a1").Select
    Worksheets("
    參數(shù)").Range("a1").Activate
    ActiveCell.CurrentRegion.Select
    Set tbl = ActiveCell.CurrentRegion
    Fcount = tbl.Rows.Count
    '---------------------------
    開始循環(huán)導(dǎo)入數(shù)據(jù)文件
    For I = 1 To Fcount
    '---------------------------
    獲取需要導(dǎo)入的文件名
    Fname = Sheets("
    參數(shù)").Cells(I, 1)
    '---------------------------
    計算并定位行號
    Worksheets("
    本周完成情況").Activate
    Range("A1").Select
    Range("A1").Activate
    ActiveCell.CurrentRegion.Select
    Set tbl = ActiveCell.CurrentRegion
    Rcount = tbl.Rows.Count + 1
     '
    -------------------開始導(dǎo)入
      With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & Fname & ";" _
            , _
            "Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database " _
            , _
            "Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk" _
            , _
            " Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet O" _
            , _
            "LEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
            ), Destination:=Cells(Rcount, 1))
            .CommandType = xlCmdTable
            .CommandText = Array("
    本周完成情況$")
            .Name = "
    本周完成"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = Fname
            .Refresh BackgroundQuery:=False
        End With
     
       '--------
    將查詢區(qū)域的字段名移除并刷新數(shù)據(jù)源沒有標題行。
    Cells(Rcount, 1).Select
        With Selection.QueryTable
            .FieldNames = False
        End With
    Selection.QueryTable.Refresh BackgroundQuery:=False
       
    '----------
    導(dǎo)下周計劃
    Worksheets("
    下周計劃").Activate
    Range("A1").Select
    Range("A1").Activate
    ActiveCell.CurrentRegion.Select
    Set tbl = ActiveCell.CurrentRegion
    Rcount = tbl.Rows.Count + 1
    '
    -------------------開始導(dǎo)入
      With ActiveSheet.QueryTables.Add(Connection:=Array( _
            "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & Fname & ";" _
            , _
            "Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database " _
            , _
            "Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk" _
            , _
            " Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet O" _
            , _
            "LEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False" _
            ), Destination:=Cells(Rcount, 1))
            .CommandType = xlCmdTable
            .CommandText = Array("
    下周計劃$")
            .Name = "
    下周計劃"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .SourceDataFile = Fname
            .Refresh BackgroundQuery:=False
        End With
       '--------
    將查詢區(qū)域的字段名移除并刷新數(shù)據(jù)源沒有標題行。
    Cells(Rcount, 1).Select
        With Selection.QueryTable
            .FieldNames = False
        End With
    Selection.QueryTable.Refresh BackgroundQuery:=False

    Next I
    '
    設(shè)置已用區(qū)域邊框線
    Sheets("
    本周完成情況").Select
    Call Set_borders
    Sheets("
    下周計劃").Select
    Call Set_borders
    Sheets("
    控制臺").Select
    Exit Sub
    End Sub

    Sub openfile()
        Worksheets("
    參數(shù)").Select
        Range("a1:a1000").Select
        Selection.Delete
        Dim lngCount As Long
        ' Open the file dialog
        With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = True
            .Show
            ' Display paths of each file selected
          For lngCount = 1 To .SelectedItems.Count
          Fname = .SelectedItems(lngCount)
          Worksheets("
    參數(shù)").Cells(lngCount, 1) = Fname
            Next lngCount
        End With
    End Sub

    Sub Set_borders()
    ActiveSheet.UsedRange.Select
    With Selection
    .Borders(xlEdgeTop).LineStyle = xlContinuous
    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    .Borders(xlInsideVertical).LineStyle = xlContinuous
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeRight).LineStyle = xlContinuous
    End With
    End Sub

    全部評論 (0)

    Copyright©2008-2025 版權(quán)所有 浙ICP備06026258號-1 浙公網(wǎng)安備 33010802003509號 杭州講師網(wǎng)絡(luò)科技有限公司
    講師網(wǎng) m.transparencyisgood.com 直接對接10000多名優(yōu)秀講師-省時省力省錢
    講師網(wǎng)常年法律顧問:浙江麥迪律師事務(wù)所 梁俊景律師 李小平律師

    主站蜘蛛池模板: 国产精品亚洲一区二区在线观看| 国产亚洲福利一区二区免费看| 国产精品一区二区不卡| 国产一区二区三区无码免费| 亚洲第一区视频在线观看| 精品人妻一区二区三区毛片 | 久久无码一区二区三区少妇| 精品国产一区二区三区香蕉 | 激情啪啪精品一区二区| 91一区二区视频| 国产精品一区二区av不卡| 成人免费视频一区| 亚洲AV香蕉一区区二区三区| 国产成人精品久久一区二区三区 | 日本一区二区三区精品视频| 亚洲欧美日韩一区二区三区在线| 色噜噜狠狠一区二区三区果冻| 一区二区三区国产| 免费视频一区二区| 国产亚洲无线码一区二区| 99久久精品国产高清一区二区 | 性色AV一区二区三区无码| 无码人妻久久一区二区三区免费丨| 亚洲香蕉久久一区二区| 日韩人妻无码一区二区三区99 | 中文字幕一区二区三区在线不卡| 亚洲日本中文字幕一区二区三区| 一区二区三区91| 国产一区二区免费视频| 日本不卡免费新一区二区三区| 亚洲国产一区二区三区青草影视| 亚洲一区二区电影| 亚洲AV成人一区二区三区观看| 国产乱码精品一区二区三区 | 精品一区二区三区免费毛片| 波多野结衣一区二区三区高清av | 在线观看国产一区二区三区| 国产一区二区免费在线| 中文字幕无线码一区| 无码一区二区三区免费| 亚洲AV成人精品一区二区三区 |