Board logo

標題: 使用VAB按鈕完成資料 [打印本頁]

作者: koala2099    時間: 2013-10-29 00:51     標題: 使用VAB按鈕完成資料

VAB我在還學習中,所以不是很懂
但急迫在工作中(每天)使用頻繁只好上來求救,請求會的大大幫我

想使用VAB按鈕完成資料
作者: luhpro    時間: 2013-10-30 22:58

回復 1# koala2099
[attach]16515[/attach]
  1. Private Sub cbLdData_Click()
  2.   Dim iI%
  3.   Dim sSh$(0 To 1)
  4.   Dim lRow&, lRows&
  5.   Dim vFs, vF
  6.   
  7.   sSh(0) = "s"
  8.   sSh(1) = "e"
  9.   For iI = 0 To 1
  10.     With Sheets(sSh(iI))
  11.       .Activate
  12.       .Cells.ClearContents

  13.       Set vFs = CreateObject("Scripting.FileSystemObject")
  14.       Set vF = vFs.OpenTextFile(ThisWorkbook.Path & "\" & sSh(iI) & ".csv", 1, -2) ' 使用系統預設格式開啟唯讀文字檔案
  15.       lRow = 1
  16.       Do While Not vF.AtEndOfStream
  17.         With .Cells(lRow, 1)
  18.           .Value = vF.readline
  19.           .TextToColumns Comma:=True
  20.         End With
  21.         lRow = lRow + 1
  22.       Loop
  23.       vF.Close
  24.       .Range(.[A2], .[B2]).Insert shift:=xlShiftDown
  25.       lRow = 2
  26.       lRows = 2
  27.       Do While .Cells(lRows, 3) <> ""
  28.         If .Cells(lRows, 1) <> "" Then
  29.           .Rows(lRows).Cut
  30.           .Cells(lRow, 1).Insert
  31.           lRow = lRow + 1
  32.         End If
  33.         lRows = lRows + 1
  34.       Loop
  35. On Error GoTo LdDataErr
  36.       .[A1].SortSpecial key1:=.[A1], Header:=xlYes
  37.       lRows = 2
  38.       Do While .Cells(lRows, 1) <> ""
  39.         lRows = lRows + 1
  40.       Loop
  41.       .Rows(lRows & ":" & Rows.Count).Delete
  42.     End With
  43.   Next iI
  44. On Error GoTo 0
  45. Exit Sub
  46.   
  47. LdDataErr:
  48.   Select Case Err.Number
  49.     Case 1004
  50.       Resume Next
  51.     Case Else
  52.       MsgBox "發生錯誤, 錯誤代碼 : " & Err.Number & "  ,錯誤原因 : " & Err.Description
  53.       Exit Sub
  54.   End Select
  55. End Sub
複製代碼

作者: koala2099    時間: 2013-10-30 23:47

回復 2# luhpro


    :victory: 哇~~~好感動唷!以後工作可以加快許多了,非常謝謝您:loveliness:

可否在請教若檔案S及E是.xls,單純只要把S.xls工作表S、E.xls工作表E內的資料
分別複製到ALL.xls工作表S及E又該如何處理
(有時會有3~5個.xls的工作表)要複製到ALL原有工作表裡
因為ALL.xls裡我設有一個SUMIF統計全部數據表格
有在網路上找到都是新增新的工作表
不是把資料覆製到我原有工作表裡
所以我用SUMIF的連結全用不上又要重連
可否再請您幫幫我:$
作者: luhpro    時間: 2013-10-31 19:41

本帖最後由 luhpro 於 2013-10-31 19:48 編輯

回復 3# koala2099
  1. Sub nn()
  2.   Dim iI%
  3.   Dim sSh$(0 To 1)

  4.   sSh(0) = "S"
  5.   sSh(1) = "E"
  6.   For iI = 0 To 1
  7.     With Workbooks.Open(ThisWorkbook.Path & "\" & sSh(iI) & ".xls")
  8.       .Sheets(sSh(iI)).Cells.Copy Me.Parent.Sheets(sSh(iI)).[A1]
  9.       .Close SaveChanges:=False
  10.     End With
  11.   Next iI
  12. End Sub
複製代碼
註 : 1. 程式要與 E.xls(內有 Sheets("E")) 及 S.xls(內有 Sheets("S")) <- 此即要 Copy 的資料Sheet 兩個檔案放在同個目錄下.
      2. 在上述程式所在的檔案中,S 與 E 兩個 Sheet 必須存在, 否則會發生錯誤.
      3. 請留意 -  在上述程式所在的檔案中的 S 與 E 兩個 Sheet 的所有資料會全部被覆蓋掉.
      4. 如果每次都要複製到同一個 Sheet 內, 只要改第 9 行:
      .Sheets(sSh(iI)).Cells.Copy Me.Parent.Sheets("目的Sheet的名稱")).[A1]
作者: koala2099    時間: 2013-10-31 21:07

回復 4# luhpro


謝謝~問題是解決了!
只是有些不便,因為下載的資料Sheets名不同
還需先一一開啟檔案將 E.xls及S.xls(內Sheets重新命名為("E")) 、 S.xls(內 Sheets重新命名為("S")) ....
有時要匯E.xls、S.xls、A.xls、B.xls、C.xls....  ;P
本想從XML資料匯入再按右鍵重新整理,只是不知道為什麼所匯入的資料是[文字]非[數據]導致SUMIF無法加總
:dizzy: 所以都用手動一個一個複製貼上值
非常謝謝您的幫忙~辛苦了3Q^^
作者: luhpro    時間: 2013-10-31 21:17

回復 5# koala2099
如果確定目的檔案都很單純只有一個 Sheet 那第 9 行可以改成 :

.Sheets(1).Cells.Copy Me.Parent.Sheets(sSh(iI)).[A1]

即可.
作者: koala2099    時間: 2013-10-31 23:14

回復 6# luhpro
順利解決了  非常謝謝您的幫忙,讓我這菜卡能更順利完成工作~謝謝^^
Sub A()
  Dim iI%
  Dim sSh$(0 To 2)

  sSh(0) = "S"
  sSh(1) = "T"
  sSh(2) = "E"

    For iI = 0 To 2
    With Workbooks.Open(ThisWorkbook.Path & "\" & sSh(iI) & ".xls")
        .Sheets(1).Cells.Copy ThisWorkbook.Sheets(sSh(iI)).[A1]
      .Close SaveChanges:=False
    End With
  Next iI
  
End Sub
另其中有檔案是.csv參雜在裡面咧??




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)