返回列表 上一主題 發帖

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

回復 8# RCRG

這樣才能不開 "修改檔" ,"使用檔"又能同步更新
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

TOP

回復 10# ML089


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

'VBA程式放在 使用檔.XLS中 ThisWorkbook
Private Sub Workbook_Open()
    xF = "'C:\Documents and Settings\桌面\利用VBA更新連結\修改資料夾\[修改檔.xls]工作表A'!R1C1:R500C81"
    Workbooks("使用檔.xls").Worksheets("工作表a").Range("A1:CC500").FormulaArray = "=if(" & xF & "="""",""""," & xF & ")"
End Sub

TOP

回復 12# RCRG

我測試應該沒有問題

先傳檔案上來看看
{...} 表示需要用 CTRL+SHIFT+ENTER 三鍵輸入公式

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

回復  ML089


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

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


回復 13# ML089

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

TOP

回復 14# 准提部林

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

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

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

TOP

回復 16# RCRG


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

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

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

回復 18# RCRG


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

TOP

回復 19# 准提部林


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

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

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題