電子メール

作成日: 2015-05-03
最終更新日:

課題

ハイパーリンクで本文の文字数制限があるようだ。この制限を解消できないのか?

http://support.microsoft.com/kb/325573/ Excel: パスとファイル名の拡張子を含むファイル名の全長 217 文字

http://q.hatena.ne.jp/1173781067
http://www.vector.co.jp/soft/win95/net/se314378.html
http://www.forest.impress.co.jp/lib/inet/mail/packmailer/maildstrbt...
http://www.google.co.jp/search?aq=0&oq=Excel%E3%80%80%E3%83%A1%E3%8...

1.ハイパーリンクのジャンプ先を該当セル番地に設定する。
具体的には、セルの値はリンク先としたまま、セルの右クリックメニューからハイパーリンクの編集を開き、リンク先を「このドキュメント内(A)」にしたあと、「セル参照を入力して下さい(E)のところに、A1 と手打ちします。この「A1」は、ハイパーリンクを設定したいセル自身のアドレスにして下さい。 つまり、編集中のセルがB2なら、B2 と入力して下さい。

2.「ALT+F11」キーを押下して、「Micorosoft Visual Basic」エディターを開きます。

3.「CTRL+R」を押下して、プロジェクトエクスプローラーを開き(はじめから表示されているかもしれません)、ツリー構造をたどって、「VBAProject-Microsoft Excel Objects-Thisworkbook」をダブルクリックします。

4.マクロコードの入力欄(上の方に「(General)」と書かれた一番大きな窓です。)に、下記のコードを貼り付けます。

Private Declare Function ShellExecute Lib _
"shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Private Sub Workbook_SheetFollowHyperlink( _
ByVal Sh As Object, _
ByVal Target As Hyperlink _
)
If UCase(Replace(Target.SubAddress, "$", "")) = _
UCase(Replace(Target.Range.Address, "$", "")) Then
Call ShellExecute(0, "", Target.Range.Value, "", "", 0)
End If
End Sub

これで、32767文字(セルに入力できる文字数の上限)未満のURLに対応できると思います。

長い本文を書くと、 Hyperlinkの文字数制限で Hyperlinkを設定したセルの表示が「#VALUE!」になり送信することができません。 Hyperlinkの文字数制限を解除できる方法はあるか。

IEを制御して、URLとして扱う方法です。もっとも、セルを使う以上、32767文字という制限はありますが・・・(そこは複数セルを使うことで何とかなる?)。

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "mailto:address@add.com"

後はセルにメールアドレスを記載しておき、NavigateのURLに代入、フォームボタンを作ってマクロを登録します。 ボタンを複数登録するのも良いでしょうし、入力しているアドレスを全て読み込んで選択する方式にするのも良いでしょう。ユーザーフォームを使うのも一案です。

まりんきょ学問所コンピュータの部屋表計算ソフトの部屋 > メール


MARUYAMA Satosi