- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
9#
發表於 2019-3-13 14:13
| 只看該作者
本帖最後由 GBKEE 於 2019-3-13 14:15 編輯
回復 7# 502243
試試看- '****A.xlsm 裡面
- '**物件類別模組 Class1 的程式碼
- Option Explicit
- Public WithEvents App As Application
- Property Set T_APP(p As Application)
- Set App = p '物件類別 導入物件
- App.Visible = True
- End Property
複製代碼- 'A.xlsm
- '一般 Module1 的程式碼
- Option Explicit
- Public xApp As New Class1
- Public Ap As Object
- Private Sub Ex_開始()
- Set Ap = New Application
- Set xApp.T_APP = Ap
- Ap.Workbooks.Open (ThisWorkbook.Path & "\C.XLSM")
- '** 請修正為正確檔案名稱***
- End Sub
- Sub Ex_newexcel()
- Dim AR As Variant, Rng As Range, E As Range
- With ThisWorkbook.Sheets(1) '指名A檔下
- Set Rng = .Range("A1", .Range("A1").End(xlDown))
- End With
- AR = Rng.Value 'A檔下的數值
- Set Rng = Ap.Workbooks(1).Sheets(1).Range("A1") '指名C檔下
- Rng.EntireColumn = ""
- Set Rng = Rng.Resize(UBound(AR))
- Rng.Value = AR 'A檔下的數值貼在B檔上
- AR = "" 'AR 清空
- For Each E In Rng
- '大於5 寫上D欄的值
- If E > 5 Then AR = AR & "," & E.Range("d1")
- Next
- Set Rng = ThisWorkbook.Sheets(1).Range("C:C") '
- Rng = ""
- If AR <> "" Then
- AR = Split(Mid(AR, 2), ",")
- Rng(1).Resize(UBound(AR)) = Application.WorksheetFunction.Transpose(AR)
- 'B檔-->'大於5 寫上D欄的值 **寫在A檔C欄
- End If
- End Sub
- Private Sub Ex_結束()
- Ap.Workbooks(1).Close False
- xApp.App.Visible = False
- End Sub
複製代碼 |
|