ハイパーリンクが複数設定されているMS WordとExcelのファイルを、整理するため、ファイル名とその内部のハイパーリンク先をリストしてくれるファイラのようなものはありませんか

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/07/12 16:34:59
  • 終了:--

回答(1件)

id:cx20 No.1

cx20回答回数607ベストアンサー獲得回数1082005/07/12 19:10:22

ポイント45pt

URL はダミーです。


Word / Excel のハイパーリンクの一覧を出力するスクリプト(VBScript)を書いてみました。

以下のスクリプト(ShowHyperLinks.vbs)を、調査対象のフォルダにコピーして、

コマンドラインで、


C:¥調査対象フォルダ>CScript ShowHyperLinks.vbs //Nologo > links.csv


と実行すると、以下のようにタブ区切りのファイルが出来上がります。


■ links.csv について

[test.doc]

Text[TAB] Address

Hogehoge[TAB] http://www.google.com/

http://www.microsoft.com/japan/[TAB] http://www.microsoft.com/japan/

http://www.hatena.ne.jp/[TAB] http://www.hatena.ne.jp/


[test.xls]

Text[TAB] Address

http://www.microsoft.com/japan/[TAB] http://www.microsoft.com/japan/

aaa[TAB] http://www.google.com/

http://www.hatena.ne.jp/[TAB] http://www.hatena.ne.jp/


■ ShowHyperLinks.vbs について


’ FileName : ShowHyperLinks.vbs

’ Usage : CScript ShowHyperLinks.vbs //Nologo > links.csv


Option Explicit


Main


Sub Main()

  Dim fso

  Set fso = WScript.CreateObject(”Scripting.FileSystemObject”)

  Dim folder

  Set folder = fso.GetFolder(”.”)

  Dim file

  For Each file In folder.Files

    Dim strFileName

    strFileName = file.path ’ file.name

    

    If StrComp(Right(strFileName, 3), ”doc”, 1) = 0 Then

      ShowWordHyperLinks( strFileName )

    ElseIf StrComp(Right(strFileName, 3), ”xls”, 1) = 0 Then

      ShowExcelHyperLinks( strFileName )

    End If

  Next


End Sub


Sub ShowExcelHyperLinks( strFileName )

  Dim excel

  Set excel = CreateObject(”Excel.Application”)

  Dim book

  Set book = excel.Workbooks.Open( strFileName )

  WScript.Echo ”[” & book.Name & ”]”

  WScript.Echo ”Text” & vbTab & ”Address”

  Dim sheet

  For Each sheet In book.Worksheets

    Dim link

    For Each link In sheet.HyperLinks

      WScript.Echo link.TextToDisplay & vbTab & link.Address

    Next

  Next

  

  book.Close False

  excel.Quit

  Set excel = Nothing

End Sub


Sub ShowWordHyperLinks( strFileName )

  Dim word

  Set word = CreateObject(”Word.Application”)

  Dim doc

  Set doc = word.Documents.Open( strFileName, , True)

  WScript.Echo ”[” & doc.Name & ”]”

  WScript.Echo ”Text” & vbTab & ”Address”

  Dim link

  For Each link In doc.HyperLinks

    WScript.Echo link.TextToDisplay & vbTab & link.Address

  Next

  

  doc.Close False

  word.Quit

  Set word = Nothing

End Sub


※ プログラム内の記号(「¥」「”」「’」など)と一部空白文字は、全角になっています。

  お手数ですが、実際に動作させるには、半角に書き換えてお使い下さい。

id:hengsu

ありがとうございます。求めていた回答とは違いますが、何とかなりそうなので、助かりました。

2005/07/15 15:33:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません