返回列表 上一主題 發帖

如何利用VBA來達到 "連結" 效果?

複製內容含格式及註解, 沒什麼方便法, 老實用複製貼上吧!!

Private Sub Workbook_Open()
Dim MyB As Workbook, xB As Workbook, xFile$
Set MyB = ThisWorkbook
xFile = ThisWorkbook.Path & "\修改資料夾\修改檔.xls"  '路徑檔名自行修改
Application.ScreenUpdating = False
Set xB = Workbooks.Open(xFile, ReadOnly:=True)
xB.Sheets("工作表A").[A1:H500].Copy MyB.Sheets("工作表a").[A1]
xB.Sheets("工作表B").[AA1:AB20].Copy MyB.Sheets("工作表b").[AA1]
xB.Close 0
End Sub

來源檔手動開啟有多快, 這程式就一樣的快, 反之亦然~~

TOP

回復 16# RCRG


按鈕有人會放在資料區嗎?

可先將來源工作表設為保護,貼好後再解除保護(按鈕須設為-鎖定)
With xB.Sheets("工作表A")
      .Protect
      .[A1:H500].Copy MyB.Sheets("工作表a").[A1]
      .UnProtect
End With

TOP

回復 18# RCRG


1.先去弄清楚 ActiveSheet 是什麼意思?  〔當前工作表〕,它不一定代表是來源表或目標表
2.複製時,來源表應是保護,目標表是未保護,才能正常做〔貼上〕,
  可先手動去做一次〔複製.貼上〕試試就知道
 

TOP

回復 20# RCRG


Set xB = Workbooks.Open(xFile, ReadOnly:=True)
xB.Sheets("工作表A").Protect "123"
With MyB.Sheets("工作表a")
  .Unprotect "123"
  xB.Sheets("工作表A").[A1:H500].Copy .[A1]
  .Protect "123"
End With
 
xB.Sheets("工作表B").Protect "123"
With MyB.Sheets("工作表b")
  .Unprotect "123"
  xB.Sheets("工作表B").[AA1:AB20].Copy .[AA1]
  .Protect "123"
End With
xB.Close 0

既然已知語法,為何不自己去試作?
這VBA就是要自己動手去試作,從錯誤中去修去改,才能了解其機制,
只用問來的直接去貼用,永遠學不了!!!

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題