返回列表 上一主題 發帖

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

回復 15# starry1314


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

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

本帖最後由 starry1314 於 2015-5-6 08:40 編輯

回復 14# lpk187

了解~那
EndRow = Windows("客戶明細-業務專用.xlsm").ActiveSheet.Range("b4", Cells(Rows.Count, "A").End(xlUp).Address).Row + 1 '所有使用中的列數+1
   
假如B4,B5已有資料~他會變成在業務專用的B5的位置覆蓋 不會跑到B6去呢
應該是Range("b4",    讓他一直重B4+1吧?
所以我將它拿掉改成
EndRow = Windows("客戶明細-業務專用.xlsm").ActiveSheet.Range( Cells(Rows.Count, "A").End(xlUp).Address).Row + 1 '所有使用中的列數+1
即可以自動往下了
但不知為何如果點擊超連結之後跳回 個別客戶明細都會參照錯誤...

TOP

回復 12# starry1314


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

a.png (49.26 KB)

a.png

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

本帖最後由 starry1314 於 2015-5-6 08:25 編輯

回復 11# starry1314

不知&!Q2是要怎麼修正呢,
狀況:
1.參照路徑會錯誤,
2.也會在業務明細新貼上業務明細的檔案路徑

TOP

回復 10# lpk187
感謝幫忙~使用上方指令讀取 Q2用cell(filename)叫出來的路徑不知為何會參照錯誤
所以我只使用到 Address:=ThisWorkbook.Name  這樣也能達成我想要的效果(如下方代碼)

另想再知道如何在
以下這代碼中 插入這串自動在最下方空白列貼上的指令呢
      EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Rows(EndRow).PasteSpecial Paste:=xlPasteValues'目前使用中的分頁,的最下方空白列貼上值

因如果把Range("B7").Select拿掉,變成是以我滑鼠點選的儲值格為開頭去貼上
如果要他讓他以A1.A2.A3.A4這樣自動依序往下貼上不知該如何更改呢
  1. Sub 貼上資料至_業務管理TEST自動往下貼一行()
  2. '
  3. ' 貼上資料至_業務管理 巨集
  4. '

  5. '
  6.     Range("A3:P3").Select
  7.     Selection.Copy
  8.     Windows("客戶明細-業務專用.xlsm").Activate
  9.     Range("B7").Select
  10.     ActiveSheet.Paste Link:=True
  11.     Windows("客戶明細-業務專用.xlsm").Activate
  12.     ActiveSheet.Paste Link:=True
  13.     Application.CutCopyMode = False
  14.     ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=ThisWorkbook.Name

  15. End Sub
複製代碼

TOP

回復 7# starry1314


    若要再讀取路徑可用ThisWorkbook.Path & "\" & ThisWorkbook.Name
所以可以這樣 Address:=ThisWorkbook.Path & "\" & ThisWorkbook.Name, SubAddress:=ActiveSheet.Name & "!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

回復 6# starry1314


    讓A檔案的資料自動貼到B檔案,並在B檔案複製過去的資料欄位上,插入目前A檔案所在位置的超連結路徑

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題