返回列表 上一主題 發帖

使用VAB按鈕完成資料

回復 1# koala2099
all-a.zip (25.81 KB)
  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
複製代碼

TOP

本帖最後由 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]

TOP

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

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

即可.

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題