[[20121212215001]] 『個人マクロ』(たま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『個人マクロ』(たま)
お世話になります。
エクセル2003から2010に変更したブックがあり、個人マクロが登録されていたのですが

エクセル2003のブックには、ボタンを押すと、個人マクロが作動していたのですが、個人

マクロの拡張子がXLSBになってファイルのパスが違うみたいで作動しません。そのボタン

が、示してあるアドレスを見ると C:\Documents and Settings\ユーザー名\

ApplicationData\Microsoft\Excel\XLSTART\PERSONAL.XLS'!マクロ名で拡張子がXLSとな

っていました。個人マクロでThisWorkbook.Workbook.Path はC:\Documents and

Settings\ユーザー名\ ApplicationData\Microsoft\Excel\XLSTART\PERSONAL.XLSBと

XLSBの拡張子が違っていて”B”を追加すれば作動することまでは分かったのですが、沢山

のブックがあり一つ一つは膨大な時間が掛かってしまい何か良い方法があれば教えてください。


ChangeLinkメソッドを調べてみてはどうでしょうか(マナ)

 以前、自作アドインで同じようなことをしました。
 (本当は、簡単な方法があるのかも知れませんが)

マナさん返答有難う御座います。
マナさんちょっとよくわかっていない(たま)ですがマクロで該当のブック(多数ありを)でChangeLinkを使用して変更させればいいのですか?
(たま)

イメージしていたのは、例えばこんな感じです(マナ)
  
アクティブなブックに対して、下記マクロを実行します。
マクロはPERSONAL.XLSBに置いてください。★の行は、実際に合わせて修正が必要です。

 私の場合は、マクロをショートカット登録し、必要なブックのみ、その都度、実行していました。
 指定フォルダ内の全ブックについて、順番に実行することも工夫次第では?

 ChangeLinkとかLinkSourcesについては、ヘルプ等で調べてください。
 コードの意味が理解できると思います。

 Sub Convert_Link20121213()
    Dim myLnks, lnk
    Const oldLnk As String = "C:\*******\******\PERSONAL.XLS" '★

    myLnks = ActiveWorkbook.LinkSources(xlExcelLinks)
    If IsEmpty(myLnks) Then Exit Sub

    For Each lnk In myLnks
        If lnk = oldLnk Then
            ActiveWorkbook.ChangeLink _
                Name:=oldLnk, NewName:=ThisWorkbook.FullName, _
                Type:=xlExcelLinks
        End If
    Next

 End Sub

 時間がないので、動作確認せずアップしています。問題あれば今晩修正します。
  


マナさんコードまで教えていただき有難う御座います。
一部の作動確認ができました・・
ファイルの中を検索するように考えま-す。
これで300のブックが再起動できそうです。ありがとう。
今後も分からないことがあれば宜しくお願いします。
(たま)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.