はじめての親子ハイキングに挑戦!! >>

パワーポイントのリンクを一括更新したいのですが何か方法はありますでしょうか?

パワーポイントのファイル中に「XXXXXファイルを参照」という文言を複数箇所に登場させております。
その文言がリンクになっており、参照対象のファイルにとぶこととなっております。
ファイル中の箇所が複数なのでメンテナンスが大変です。

どなたかマクロや置換などで簡単に変更する方法をご存知の方はおられますでしょうか?
お手数ですがよろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Sub hoge()


 Dim sld As Slide
 For Each sld In ActivePresentation.Slides
  Dim hl As Hyperlink
  For Each hl In sld.Hyperlinks
   Debug.Print hl.Address
  Next
 Next
End Sub

(コピペする場合は各行頭の全角スペースを半角スペースにしてください)

このコードだと以下のような出力結果になりました。
(1) 複数のページに対応している。
(2) 1ページ内にある複数のテキストボックス全てに対応している。
(3) 1つのテキストボックス内の先頭から連続する複数のリンクに対応している。

すなわち、
1つのテキストボックスに改行で区切って複数のハイパーリンクを設定してあっても問題ないし、
改行しないで複数のハイパーリンクを設定してあっても問題ないのだが、
ハイパーリンクとハイパーリンクの間に無関係な文字(スペースを含むが改行は含まない)があると、そのテキストボックスの残りのハイパーリンクは処理してくれず、次のテキストボックスに移ってしまう。
これが PowerPoint の仕様なのかなんなのかわかりません。
    • good
    • 0
この回答へのお礼

お返事が遅れて申し訳ありません。

早速のご回答ありがとうございます。
わざわざコードまで準備していただき
本当に助かります!
(しかもいろいろな条件下で試していただき)

早速導入してみます!

お礼日時:2007/12/08 11:05

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qハイパーリンクのリンク先を一括変換したい

OSはXP, Officeは2000を使用しています
ハイパーリンクでリンクされているアクセス先のファイルを別フォルダに移動させ、新たにリンクをさせたいのです。
変更前 c:\111 -> 変更先 c:\222

マクロなどで一括変換することはできますでしょうか?
よろしくお願いいたします。

Aベストアンサー

いまさらかもしれませんが以下のような方法を使えば可能かと考えられます。
ご参考ください。

<ハイパーリンク先変更方法>
前提条件
1. シート内に設定された数式にエラー表示がないこと
2. 表示文字列(AAA)とまったく同じ文字が入ったセルが他にないこと
3. 作業前にファイルのコピーをとってください(最悪の事態を避けるためです)

<作業手順>

1. リンクの設定されたセルをコピーして同じシート内の別のところに貼り付けます
2. 上記1.でコピーしたセルのリンク先を正しいリンク先に変更し、表示文字列を別の文字列(例:BBB)に変更します。
3. 【編集】→【置換】をクリックします。
4. 「検索する文字列」に「AAA」、「置換後の文字列」に「=1/0」と入力し、【完全に同一のセルだけを検索する】にチェックを入れて【すべて置換】をクリックします。(この時点で表示文字列「AAA」のものは「#DIV/0!」と表示されると思います)
5. 手順1.でコピーしたセルの表示文字列を「AAA」の戻します。
6. 上記セルをコピーします。
7. 【編集】→【ジャンプ】をクリックします。
8. 【セル選択】をクリックし、【数式】を選択し、【エラー値】以外のチェックをはずして【OK】をクリックします。(この時点でエラー表示になっていたすべてのセルが選択された状態になると思います)
9. 【Ctrl】+【V】を押して貼り付けます。
10. 手順1.でコピーしたセルを削除します。

<作業はここまでです>

Excel2002以降ですと置換を行なうときに候補の一覧が表示されるので、その時点ですべてを指定できるのですが。。。

簡単なサンプルでは正常にできました。
ご不明な点がありましたらご質問いただければと思います。
がんばってくださいね。

いまさらかもしれませんが以下のような方法を使えば可能かと考えられます。
ご参考ください。

<ハイパーリンク先変更方法>
前提条件
1. シート内に設定された数式にエラー表示がないこと
2. 表示文字列(AAA)とまったく同じ文字が入ったセルが他にないこと
3. 作業前にファイルのコピーをとってください(最悪の事態を避けるためです)

<作業手順>

1. リンクの設定されたセルをコピーして同じシート内の別のところに貼り付けます
2. 上記1.でコピーしたセルのリンク先を正しいリンク先に変更...続きを読む

QEXCEL2010のハイパーリンク先の一括変更

EXCEL2010のハイパーリンク先の一括変更をしたいのですが、
\\TS-XHL6E6\ だけを削除して、このお尻の部分のリンクを生かしたいのですが、エクセル上で検索して、一括変更するには、どうすればよいのでしょうか?

Aベストアンサー

リンク先を別のブックに変更したいなら、リンクの編集から操作するのが簡単で確実です。

データタブの「リンクの編集」をクリックし、「リンク元の変更」で新しくリンクさせたいブックを指定してください。

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

QExcelからPowerPointグラフのデータ範囲を変更

PowerPointにEXCELのグラフをリンク貼り付けしました。
データは日々増えていきますので、名前を定義し、データ範囲に設定したのですが、
EXCELのデータを更新しても、PowerPointのグラフに反映されません。
そこで、Excel(VBA)からPowerPointのグラフを操作して、グラフのデータ範囲を
変更しようと思います。
VBAでPowerPointのグラフを取得することはできたのですが、データ範囲の
変更の仕方がわかりません。
ご存知の方よろしくお願いいたします。

WindowsXP
Excel2007・PowerPoint2007

Aベストアンサー

こんにちは「junko5884」さん

PowerPointのヘルプで「リンク設定」でワード検索すると、
「Excel グラフをリンクする、または埋め込む」の項目がある
と思うので参考にしてみては、いかがでしょうか。

私は、WindowsXP・Excel2003・PowerPoint2003の環境なので
あくまで参考ですが検索してみることをお勧めします。
VBAを使わなくても私の環境では、PowerPointに変更は反映されました。

QExcelマクロでグラフをPowerPointにリンク貼り付けする方法

グラフ作成後データが変更にされるケースがあるので、Powerpointにリンク貼り付けをしていますが、グラフ数が多いので作業短縮のためマクロ化を進めています。
Q&Aを参考に、PowerPointの起動・スライド追加まではできたのですが、PowerPointの読み取りマクロで得られたリンク貼り付けと思われる実行文で「実行エラー Selection.ShapeRange : 無効な要求です。適切な項目が選択されていません。」というエラーが発生し、お手上げの状態です。解決方法をご教授願います。

Set ppApp = CreateObject("PowerPoint.Application")
:
:
For Each Sh In ActiveWorkbook.Worksheets
For i = 1 To Sh.ChartObjects.Count
     '//対象グラフをコピー
    Sh.ChartObjects(i).Copy
    ' // PP 新規スライド挿入
    Set ppSld = ppPst.Slides.Add(Index:=i, _
    Layout:=ppLayoutBlank)
    ' // PP 貼り付け 
         ↓ここでエラー発生
    With ppApp.ActiveWindow.Selection.ShapeRange(i)
   .Height = 409.5
   .Width = 649.25
    End With
Next i
Next Sh

グラフ作成後データが変更にされるケースがあるので、Powerpointにリンク貼り付けをしていますが、グラフ数が多いので作業短縮のためマクロ化を進めています。
Q&Aを参考に、PowerPointの起動・スライド追加まではできたのですが、PowerPointの読み取りマクロで得られたリンク貼り付けと思われる実行文で「実行エラー Selection.ShapeRange : 無効な要求です。適切な項目が選択されていません。」というエラーが発生し、お手上げの状態です。解決方法をご教授願います。

Set ppApp = CreateObject("Powe...続きを読む

Aベストアンサー

[回答番号:No.1] の DOUGLAS_ です。

>リンク貼り付け・・・
>読み取りマクロで・・・
でしたね。
 [回答番号:No.1]は取り下げます。

 私もいろいろと WEB検索 してみて
ppApp.ActiveWindow.View.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoTrue
あたりでいけるかとも思ったのですが、どうも「クリップボード 経由の Excel グラフ」に見合う「DataType」がなさそうですし、大体、VBA の実行中には、PowerPoint 自体で、[形式を選択して貼り付け] - [リンク貼り付け] が グレイアウト して選択できない状態のようですので、ひょっとしたら、VBA で「リンク貼り付け」すること自体無理なのかも知れません。

 ちなみに、ppApp の方を AppActivate して
Application.SendKeys "%ES%L{ENTER}"
とでもしようかと思いましたが、これでも [リンク貼り付け(L)] が グレイアウト してます。

[回答番号:No.1] の DOUGLAS_ です。

>リンク貼り付け・・・
>読み取りマクロで・・・
でしたね。
 [回答番号:No.1]は取り下げます。

 私もいろいろと WEB検索 してみて
ppApp.ActiveWindow.View.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoTrue
あたりでいけるかとも思ったのですが、どうも「クリップボード 経由の Excel グラフ」に見合う「DataType」がなさそうですし、大体、VBA の実行中には、PowerPoint 自体で、[形式を選択して貼り付け] - [リンク貼り付け] が グレイアウト し...続きを読む

QExcel VBA:リンクの更新

いつもお世話になっています。

Excelでセルに他のブックのリンクを貼ってある場合、
ブック起動時に『更新しますか?』と聞いてきますよね(メニューバーの編集→リンクの設定→起動時の設定で聞いてこないようにもできますが)。

(1)VBAでリンクの更新をさせるには、どのように書けばよろしいでしょうか?

(2)また、『値の更新』ボタンがグレーアウトされていてクリックできないのですが、理由(原因)は何でしょうか?

教えてください、よろしくお願いします。

Aベストアンサー

こんばんは。

(1) 特定のブックならば、Open メソッドの中の引数の、UpdateLinks を3にすればよいけれども、設定はそのままで、開いた時に操作する方法は、

たぶん、ThisWorkbook のOpenイベントに、以下のようなものを入れておけばよいと思います。
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways

この方法はやったことがないので、確実にできるか分かりませんが。
というのは、ダイアログが先か、Openイベントが先かは、分かりません。

(2)『値の更新』ボタンがグレーアウト というのは、確か、更新元のファイルがなくなって、値だけが残っている場合だったと思います。

Qパワポスライドショー実行時のリンクデータ自動更新

パワーポイントでエクセルのデータをリンク貼り付けし、リアルタイムのデータ表示をしています。
しかしスライドショーを実行するとデータが自動更新しません。
ちなみにエクセルデータは随時変動し、パワーポイントでは何枚かのシートを順繰り表示させています。
よい方法はないでしょうか。ご教授よろしくお願いします。
※3/2office系カテゴリーで同内容を質問させていただいています。回答が無いもので…。

Aベストアンサー

「アニメの追加」 → OLEアクションの動作 → どれかを設定し、「直前の動作と同時」にしておきます。

 スライドショー中にエクセルが自動で開きますが
(あらかじめ小さなウィンドウにしておくなどしておき、)
閉じればその後は自動で変更されます。

エクセルを完全に見えない状態にしたいときはExcelVBAとPowerPoint VBAを勉強してください。

Qパワーポイントのハイパーリンク機能で教えてください

PowerPoint2000を使用しております。ハイパーリンクについて質問です。
ハイパーリンクを挿入した文字列は、スライドショー時には、その文字列
にマウスカーソルを合わせると「指マーク」になり、クリックできますが、
これをスライドショーではなく、通常の編集画面でもできるようにする
にはどのようにすればよろしいでしょうか?
編集画面でも、文字列に合わせて右クリックから「ハイパーリンク」⇒
「開く」でリンク先を開けることはわかるのですが、編集画面から1クリック
でリンク先にジャンプしたいのです…。

Aベストアンサー

できないと思いますよ。
クリックするたびにジャンプしてたら、
普通に編集できなくなってしまうと思うのですが・・・

>編集画面でも、文字列に合わせて右クリックから「ハイパーリンク」⇒
>「開く」でリンク先を開けることはわかるのですが、

それをマクロ化して、ボタンをツールバーに置けば良いと思います。

ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick).Hyperlink.Follow

これでできました。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcelからPowerPointへ画像を貼り付ける作業を簡素化

Excelの2つのファイル(東西、南北)から、PowerPointの1つのファイル(「一覧」)へ画像を貼り付ける作業がよくあるのですが、手順を簡素化するアイディアは有りませんでしょうか?
貼り付ける目的は、画像が重たい(Excel30000行分x10系列)ので、軽くするため&東西と南北を並べて一覧にするためで、

グラフをPowerPointに「形式を選択して貼り付け>拡張メタファイル」し、
→それをすぐ切り取って、PowerPointに「形式を選択して貼り付け>png」します

が(1回目の変換ではpngが選べない)、この手順は業務命令で指示されているので、変えられません。(私自身は二度変換する意味自体を良くわかっていませんが、それはこの質問と直接関わりありません)

これをグラフ40枚分行うのですが、自動化するか(マクロの組み方は私は知りません)、pngへ一括変換・一発変換する方法はありませんか?(現状、1枚当たりに相当な時間がかかっています。)
XPでExcel2003で、PowerPointも2003だと思います。

Aベストアンサー

補足ありがとうございました。

具体的に書いていただき、回答するに励みになりました。

どうも PP のグラフィックは美しくありません。Excel や Word と比較してそう思います。
経験からアドバイスすると Excel のグラフを最もきれいに、かつ軽量にPP に貼り付けるには、

  1. Excel で次の VBA を実行し、グラフをピクチャー(ここでは拡張
    メタファイル)としてコピーする

    ActiveChart.CopyPicture xlScreen, xlPicture

  2. PowerPoint にそのままで貼り付け

という手順が良いと思います。PP 側で「形式を選んで・・・」で拡張メタファイルにしても画質が明らかに落ちてます。

 # Excel2003、2007 ではわかりませんが。

下記は、アクティブブック内にある全てのグラフを PP に貼り付けます。

もともとのデータが大きいみたいですから、ある程度時間はかかるでしょう。とりあえず、お試しを。

' // 標準モジュール

Sub XLグラフをPPに貼り付け()

  ' // グラフウインドウとなっているものは対象外です。

  Dim ppApp    As Object ' PowerPoint.Application
  Dim ppPst    As Object ' PowerPoint.Presentation
  Dim ppSld    As Object ' PowerPoint.Slide
  Dim Sh      As Worksheet
  Dim Obj     As Object
  Dim iCount    As Integer
  Dim sngPosOffset As Single
  Dim i      As Long
  
  ' // PowerPoint(以下PP) 定数
  Const ppLayoutBlank = 12
  Const ppPasteEnhancedMetafile = 2
  
  ' // PP 起動
  On Error Resume Next
  Set ppApp = CreateObject("PowerPoint.Application")
  If ppApp Is Nothing Then Err.Raise 1000, , "PowerPoint cannot be started."
  On Error GoTo Err_
  
  ' // PP を表示する
  ppApp.Visible = True
  ' // PP 新規プレゼンテーション作成
  Set ppPst = ppApp.Presentations.Add(WithWindow:=True)
  ' // PP 新規スライド挿入
  Set ppSld = ppPst.Slides.Add(Index:=1, _
                 Layout:=ppLayoutBlank)
  ' // XL 処理グラフ数カウンタ
  iCount = 0
  ' // PP グラフ貼り付け位置初期値
  sngPosOffset = 0
  
  ' // XL グラフの貼り付け開始
  For Each Sh In ActiveWorkbook.Worksheets
    For i = 1 To Sh.ChartObjects.Count
      ' // XL グラフを Picture 形式でコピー
      Sh.ChartObjects(i).CopyPicture xlScreen, xlPicture
      ' // PP 貼り付け
      ppSld.Shapes.Paste
      ' // PP グラフ位置・サイズ補正
      With ppSld.Shapes(i)
        .LockAspectRatio = msoTrue
        .Top = sngPosOffset
        .Left = sngPosOffset
        .Height = .Height * 0.5   ' // 50%縮小
      End With
      ' // PP 次の貼り付け位置オフセット
      sngPosOffset = sngPosOffset + 20
      ' // XL 処理グラフ数カウンタ
      iCount = iCount + 1
    Next i
  Next Sh
  If iCount = 0 Then ppApp.Quit
  MsgBox CStr(iCount) & "枚のグラフを処理しました", vbInformation
  
Bye_:
  On Error GoTo 0
  Set ppApp = Nothing: Set ppPst = Nothing
  Set ppSld = Nothing: Set Sh = Nothing
  Exit Sub
Err_:
  MsgBox Err.Description, vbCritical
  Resume Bye_
End Sub

補足ありがとうございました。

具体的に書いていただき、回答するに励みになりました。

どうも PP のグラフィックは美しくありません。Excel や Word と比較してそう思います。
経験からアドバイスすると Excel のグラフを最もきれいに、かつ軽量にPP に貼り付けるには、

  1. Excel で次の VBA を実行し、グラフをピクチャー(ここでは拡張
    メタファイル)としてコピーする

    ActiveChart.CopyPicture xlScreen, xlPicture

  2. PowerPoint にそのままで貼り付け

という...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング