返回列表 上一主題 發帖

[發問] 兩個獨立EXCEL 如何將運算完的資料回傳到主Excel?

本帖最後由 GBKEE 於 2019-3-13 14:15 編輯

回復 7# 502243
試試看
  1. '****A.xlsm 裡面
  2. '**物件類別模組 Class1 的程式碼
  3. Option Explicit
  4. Public WithEvents App  As Application
  5. Property Set T_APP(p As Application)
  6.     Set App = p     '物件類別 導入物件
  7.     App.Visible = True
  8. End Property
複製代碼
  1. 'A.xlsm
  2. '一般 Module1 的程式碼
  3. Option Explicit
  4. Public xApp As New Class1
  5. Public Ap As Object
  6. Private Sub Ex_開始()
  7.     Set Ap = New Application
  8.     Set xApp.T_APP = Ap
  9.     Ap.Workbooks.Open (ThisWorkbook.Path & "\C.XLSM")
  10.                       '** 請修正為正確檔案名稱***
  11. End Sub
  12. Sub Ex_newexcel()
  13.     Dim AR As Variant, Rng As Range, E As Range
  14.     With ThisWorkbook.Sheets(1)  '指名A檔下
  15.         Set Rng = .Range("A1", .Range("A1").End(xlDown))
  16.     End With
  17.     AR = Rng.Value  'A檔下的數值
  18.     Set Rng = Ap.Workbooks(1).Sheets(1).Range("A1") '指名C檔下
  19.     Rng.EntireColumn = ""
  20.     Set Rng = Rng.Resize(UBound(AR))
  21.     Rng.Value = AR  'A檔下的數值貼在B檔上
  22.     AR = ""           'AR 清空
  23.     For Each E In Rng
  24.         '大於5 寫上D欄的值
  25.         If E > 5 Then AR = AR & "," & E.Range("d1")
  26.     Next
  27.     Set Rng = ThisWorkbook.Sheets(1).Range("C:C")   '
  28.     Rng = ""
  29.     If AR <> "" Then
  30.         AR = Split(Mid(AR, 2), ",")
  31.         Rng(1).Resize(UBound(AR)) = Application.WorksheetFunction.Transpose(AR)
  32.         'B檔-->'大於5 寫上D欄的值 **寫在A檔C欄
  33.     End If
  34. End Sub

  35. Private Sub Ex_結束()
  36.     Ap.Workbooks(1).Close False
  37.     xApp.App.Visible = False
  38. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2019-3-14 10:20 編輯

回復 10# 502243
你只用圖片說明,但如再能加上範例檔祥加說明一切狀況,
回覆者會貼切的回答  


你疑惑<===E.Range("d1")  為何是用E?而不是用Ap.Workbooks("c").Sheets(1)
A的資料 不是要貼上C 的A欄 嗎?
Set Rng = Ap.Workbooks(1).Sheets(1).Range("A1") '指名C檔下
篩選[A欄]>5 取的 C 的D欄 的資料  >>不就  E.Range("d1")

你疑惑  If AR <> "" Then '有資料    <====AR最上面不是已經清空為0了??
這裡啊******
For Each E In Rng
        '大於5 寫上D欄的值  **有
        If E > 5 Then AR = AR & "," & E.Range("d1")
    Next
***********
xApp.App.Quit   或   Ap.Quit      都可


回復 14# 502243
不同excel.exe  間 的物件 無法用Copy
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 16# 502243
    '一般 Module 的程式碼
  1.     Option Explicit
  2.     Public Ap As Object, Aa As Object
  3.    Sub Ex_開始()
  4.          '新開2個Excel 程式
  5.          Set Ap = New Application
  6.         Set Aa = New Application
  7.          Stop '開啟工作管理員看看
  8.         Ap.Visible = True
  9.        Stop '開啟工作管理員看看
  10.         Aa.Visible = True
  11.         Stop '開啟工作管理員看看
  12.          
  13.     End Sub
  14.      Sub Ex_結束()
  15.           Stop '開啟工作管理員看看
  16.           Ap.Quit
  17.           Stop '開啟工作管理員看看
  18.           Aa.Quit
  19.           Stop '開啟工作管理員看看
  20.     End Sub
  21.    
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題