返回列表 上一主題 發帖

[發問] 關於自動貼上連結至另一個檔案並自動插入超連結

回復 2# starry1314


    看不懂你的連結是要連到哪裡,
像這樣嗎?
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="客戶明細-業務專用.xlsm", SubAddress:="五月!A1"

TOP

回復 2# starry1314


    還是這樣?
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="個別客戶明細(請先另存新檔).xlsm", SubAddress:="收款跟催!Q2"

還有你的連結要放哪裡?你的問題中也沒說清楚!所以我只能猜測

TOP

本帖最後由 lpk187 於 2015-5-5 22:46 編輯

回復 6# starry1314


    Windows("客戶明細-業務專用.xlsm").Sheets("五月").Hyperlinks.Add Anchor:=Windows("客戶明細-業務專用.xlsm").Sheets("五月").Range("B7"), Address:=ThisWorkbook.Name, SubAddress:=ActiveSheet.Name & "!Q2"
其中 ThisWorkbook.Name 是"取得"個別客戶的工作簿名稱
ActiveSheet.Name是目前的工作表名稱
會用這2個是你說個別客戶的工作簿名稱會不同所以可以用這樣來讀取其名稱

TOP

回復 7# starry1314


    若要再讀取路徑可用ThisWorkbook.Path & "\" & ThisWorkbook.Name
所以可以這樣 Address:=ThisWorkbook.Path & "\" & ThisWorkbook.Name, SubAddress:=ActiveSheet.Name & "!Q2"

TOP

回復 12# starry1314
  1. Sub 貼上資料至_業務管理TEST自動往下貼一行()
  2. '
  3. ' 貼上資料至_業務管理 巨集
  4. '

  5. '
  6.    
  7.    
  8.     Range("A3:P3").Copy
  9.     Workbooks.Open (ThisWorkbook.Path & "\" & "客戶明細-業務專用.xlsm")
  10.     Windows("客戶明細-業務專用.xlsm").Activate
  11.     EndRow = Windows("客戶明細-業務專用.xlsm").Sheets("五月").Range("B4", Cells(Rows.Count, "B").End(xlUp).Address).Row + 1 '所有使用中的列數+1
  12.     Windows("客戶明細-業務專用.xlsm").Sheets("五月").Cells(EndRow, "B").PasteSpecial Paste:=xlPasteValues '目前使用中的分頁,的最下方空白列貼上值
  13.     ActiveSheet.Paste Link:=True
  14.     Windows("客戶明細-業務專用.xlsm").Activate
  15.     ActiveSheet.Hyperlinks.Add Anchor:=Cells(EndRow, "B"), Address:=ThisWorkbook.Name
  16.     Workbooks("客戶明細-業務專用.xlsm").Close True

  17. End Sub
複製代碼

TOP

回復 12# starry1314


    路徑的問題,若要用網路磁碟機那路徑就要設絕對路徑給它
如下圖把路徑複製起來然後  Address:="複製的路徑" & "\" & ThisWorkbook.Name

a.png (49.26 KB)

a.png

TOP

本帖最後由 lpk187 於 2015-5-6 08:44 編輯

回復 12# starry1314


    程序修改如下
  1. Sub 貼上資料至_業務管理TEST自動往下貼一行()
  2. '
  3. ' 貼上資料至_業務管理 巨集
  4. '

  5. '
  6.    
  7.    
  8.     Range("A3:P3").Copy
  9.     Workbooks.Open ("複製的路徑" & "\" & "客戶明細-業務專用.xlsm")
  10.     Windows("客戶明細-業務專用.xlsm").Activate
  11.     EndRow = Windows("客戶明細-業務專用.xlsm").Sheets("五月").Range("B4", Cells(Rows.Count, "B").End(xlUp).Address).Row + 1 '所有使用中的列數+1
  12.     Windows("客戶明細-業務專用.xlsm").Sheets("五月").Cells(EndRow, "B").PasteSpecial Paste:=xlPasteValues '目前使用中的分頁,的最下方空白列貼上值
  13.     ActiveSheet.Paste Link:=True
  14.     Windows("客戶明細-業務專用.xlsm").Activate
  15.     ActiveSheet.Hyperlinks.Add Anchor:=Cells(EndRow, "B"), Address:="複製的路徑" & "\" & ThisWorkbook.Name
  16.     Workbooks("客戶明細-業務專用.xlsm").Close True

  17. End Sub
複製代碼
其中的Sheets("五月"),你可以用變數來讓它變成動態的,或是讓使用者自己選擇,也或是依照日期來選擇,方法有很多,
還有ActiveSheet也可以用Sheets("五月")的變數取代之
連 Range("A3:P3").Copy這個也可以讓它成為變數
在程式中除非必要,否則盡量不要用.Select或.Activate,因為這樣產生的bug也會很多的,而且動作也會變慢!

TOP

回復 15# starry1314


    ActiveSheet.Range("b4", Cells(Rows.Count, "A").End(xlUp).Address).Row + 1
這句的意思是從居b4開始到B欄的最後儲存格然後再加1為下一個儲存格

TOP

回復 16# lpk187

語法錯誤應該是這樣才對
    EndRow = Workbooks("客戶明細-業務專用.xlsm").Sheets("五月").Cells(Rows.Count, "B").End(xlUp).Row + 1 '所有使用中的列數+1

TOP

本帖最後由 lpk187 於 2015-5-6 09:30 編輯

回復 20# starry1314
  1. Sub 貼上資料至_業務管理TEST自動往下貼一行()
  2. '
  3. ' 貼上資料至_業務管理 巨集

  4.     'Range("A3:P3").Copy
  5.     sht = ActiveSheet.Name
  6.     arr = Range("A3:P3")
  7.     本檔案的路徑 = ThisWorkbook.Path & "\"
  8.     本檔案的檔名 = ThisWorkbook.Name
  9.    
  10.     Workbooks.Open ("複製的路徑" & "\" & "客戶明細-業務專用.xlsm") '這裡的"複製的路徑"是要可以開"客戶明細-業務專用.xlsm"的路徑
  11.     Windows("客戶明細-業務專用.xlsm").Activate
  12.     AA = Workbooks("客戶明細-業務專用.xlsm").Sheets("五月").Cells(Rows.Count, "B").End(xlUp).Address
  13.     EndRow = Workbooks("客戶明細-業務專用.xlsm").Sheets("五月").Cells(Rows.Count, "B").End(xlUp).Row + 1 '所有使用中的列數+1
  14.     'Cells(EndRow, "B").PasteSpecial Paste:=xlPasteValues '原本的程序
  15.     Cells(EndRow, "B").Resize(1, UBound(arr, 2)) = Application.Transpose(Application.Transpose(arr)) '目前使用中的分頁,的最下方空白列貼上值
  16.     'ActiveSheet.Paste Link:=True
  17.     Windows("客戶明細-業務專用.xlsm").Activate
  18.     'ActiveSheet.Hyperlinks.Add Anchor:=Cells(EndRow, "B"), Address:=ThisWorkbook.Name, SubAddress:=sht'原本的程序
  19.     Windows("客戶明細-業務專用.xlsm").Hyperlinks.Add Anchor:=Cells(EndRow, "B"), Address:=本檔案的路徑 & ThisWorkbook.Name, SubAddress:=sht變更後的 '這裡的本檔案的路徑則是這個檔案所在的路徑
  20.     Workbooks("客戶明細-業務專用.xlsm").Close True

  21. End Sub
複製代碼
上面是我有修改的程序,其中有解釋路徑

TOP

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