返回列表 上一主題 發帖

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

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

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

詳細問題內容
使用檔的工作表a 和 修改檔的工作表A,內容是完全一模一樣,
因為是利用='C:\Documents and Settings\桌面\利用VBA更新連結\修改資料夾\[修改檔.xls]工作表A'!A1
公式來連結兩個不同路徑的活頁簿工作表內容,
不知有沒辦法改利用VBA來達到這種效果,(VBA裡面請幫我註明修改路徑的地方),
我想要打開活頁簿就會自動更新修改檔的連結內容而傳到使用檔;
另外如果沒有內容,可以不要顯示0而是維持空白嗎?

另外如果像是工作表B & b,有限制範圍的讀取來源,VBA又該如何寫呢?

以上問題,請大大指教幫解了!謝謝!

下載說明檔
如何利用VBA更新連結.rar (9.36 KB)

回復 21# 准提部林


   謝謝准大指教,有時間的話的確自己測試遠比貼上收穫的多,也很羨慕你們能用專業替他人解答,這是我們新手努力的目標,再次謝謝解題。

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

回復 19# 准提部林


    原來如此,"不一定是目標檔或來原檔" 這句提醒了我;

那可以改幫我寫成貼上目標檔前,先解開目標檔的保護,再貼上目標檔,最後再恢復目標檔的保護嗎?

TOP

回復 18# RCRG


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

TOP

回復 17# 准提部林


    如果來源檔( 修改檔)與目標檔(使用檔)都被保護著,那麼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)

ActiveSheet.Unprotect "123" '先取消保護

xB.Sheets("工作表A").[A1:H500].Copy MyB.Sheets("工作表a").[A1]
xB.Sheets("工作表B").[AA1:AB20].Copy MyB.Sheets("工作表b").[AA1]
xB.Close 0

ActiveSheet.Protect "123" '重新設定保護
End Sub

TOP

回復 16# RCRG


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

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

TOP

回復 14# 准提部林

所以准大的VBA是套用 複製貼上 的方法囉?

那我想了解詳細的VBA內容是 1. 複製來源直接貼上覆蓋目標
                                         還是    2. 複製來源,清除目標舊內容,再貼上目標

是哪種模式呢? 因為如果是第1個模式,那目標本來有VBA按鈕,是不是就無法覆蓋VBA按鈕了
因為准大的vba如果來源有vba按鈕好像也會一併複製,所以不知道會不會每開檔一次就複製貼上越來越多按鈕過去

TOP

回復  ML089


    為什麼我範圍自己改成如下,VBA還是會跳出問題視窗呢

'VBA程式放在 使用檔.XLS中 ...
RCRG 發表於 2016-1-25 12:22


回復 13# ML089

我大概找到問題所在了,好像是要把產生的陣列公式整個移除,才會正常;
也就是說使用檔裡,不能有跟上一次不同連結的陣列公式,有的話需全部移除,讓他從空白頁中再跑新的連結出來,才不致發生異常。
以上是我使用M大版的心得,也非常謝謝您第一時間為我解答。

TOP

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

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

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題