Excel VBA change (or edit ) links Macro

Click For Summary
SUMMARY

This discussion focuses on automating the process of changing links in Excel VBA when opening a spreadsheet on different user directories. The user seeks a solution to modify the link path from a specific user directory, such as 'C:\Users\My Name\AppData\Roaming\Microsoft\AddIns', to a dynamic path that reflects the current user's name, like 'C:\Users\Any Name\AppData\Roaming\Microsoft\AddIns'. Two suggested methods include using relative directory references and leveraging Excel functions to identify the computer's user name. The proposed solution involves using formulas like CONCATENATE to dynamically construct the link path.

PREREQUISITES
  • Familiarity with Excel VBA programming
  • Understanding of Excel functions such as CONCATENATE and MID
  • Knowledge of file path structures in Windows operating systems
  • Basic understanding of relative vs. absolute file paths
NEXT STEPS
  • Learn how to use Excel VBA to automate link updates
  • Explore the use of the Application.UserName property in Excel VBA
  • Research the implementation of relative paths in Excel
  • Investigate advanced Excel functions for dynamic data manipulation
USEFUL FOR

Excel users, VBA developers, and anyone looking to automate link management in spreadsheets across different user environments.

DoubleHubble
Messages
8
Reaction score
0
Excel VBA change (or "edit") links Macro

I have a Excel spreadsheet that has several links in it which I need to change to a different computer/user. The links are all the same and to change the source I have to go to "Edit Links" and manually change the location to the specific location on my computer.

For example my link is: 'C:\Users\My Name\AppData\Roaming\Microsoft\AddIns'

What is the quickest way to change/automate this link upon opening this file from a different user's directory (to say: 'C:\Users\Any Name\AppData\Roaming\Microsoft\AddIns')?

So not only do I need to change the link, but I need to change it to the current user's name -- which could be anyone.

To summarize I want the cells' values to change from:
='C:\Users\My Name\AppData\Roaming\Microsoft\AddIns\Addin.xla'!ADDFUNCTION(S3,$B$2)

to:
='C:\Users\Any Name\AppData\Roaming\Microsoft\AddIns\Addin.xla'!ADDFUNCTION(S3,$B$2)

without the user (Any Name) having to do anything -- ADDFUNCTION is a simple/dummy addin function that I made to add two cells together for purposes of answering this question.
 
Physics news on Phys.org


I don't know excel that good (i use MATLAB for excel-type stuff) but I'll give two suggestions in hopes that Excel can perform at least one of them:

1. relative directory. If Excel allows, instead of doing the absolute directory, C:\stuff\mydir you can reference the relative directory to the application's "local" directory: .\mydir

2. if statement and a computer function. If Excel has a function that reports some identity about the competer, you could run that test and choose the directory based on the computer identity.

The syntax and terminology might not be the same in Excel, but hopefully you can find something in help or google.
 


You can try this. Cell D5 will be the text string that you want, DoubleHubble.

In cell A5: C:\Users\My Name\AppData\Roaming\Microsoft\AddIns\Addin.xla'!A DDFUNCTION(S3,$B$2)

Cell B5: =LEFT(A5,9)

Cell C4: 200 [or some integer larger than the largest text string you expect to have]
Cell C5: =MID(A5,17,C$4)

Cell D4: Any Name
Cell D5: =CONCATENATE(B5,D$4,C5)
 

Similar threads

  • · Replies 10 ·
Replies
10
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
Replies
8
Views
4K
  • · Replies 13 ·
Replies
13
Views
2K
Replies
27
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 9 ·
Replies
9
Views
4K
Replies
4
Views
4K
  • · Replies 20 ·
Replies
20
Views
3K