Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1187 / 13645 ツリー ←次へ | 前へ→

【75759】VBAでハイパーリンク制御 ゆーあ 14/7/1(火) 17:26 質問[未読]
【75760】Re:VBAでハイパーリンク制御 カリーニン 14/7/1(火) 20:05 発言[未読]
【75761】Re:VBAでハイパーリンク制御 ゆーあ 14/7/2(水) 17:22 質問[未読]
【75762】Re:VBAでハイパーリンク制御 カリーニン 14/7/2(水) 20:51 発言[未読]
【75763】Re:VBAでハイパーリンク制御 γ 14/7/2(水) 21:34 発言[未読]
【75764】Re:VBAでハイパーリンク制御 γ 14/7/2(水) 22:55 発言[未読]
【75765】Re:VBAでハイパーリンク制御 ゆーあ 14/7/3(木) 18:36 発言[未読]
【75766】Re:VBAでハイパーリンク制御 カリーニン 14/7/3(木) 20:01 発言[未読]
【75767】Re:VBAでハイパーリンク制御 ゆーあ 14/7/4(金) 8:53 お礼[未読]

【75759】VBAでハイパーリンク制御
質問  ゆーあ  - 14/7/1(火) 17:26 -

引用なし
パスワード
   WinXP Excel2000

画像フォーム上に、
  ・画像登録・変更ボタン
  ・リンク先表示ラベル
  ・画像表示ボタン
を設置しており、やりたい事として、

1・画像登録・変更ボタン
   ⇒ボタンを押すと、ハイパーリンク先として、
    画像を入れてあるフォルダを開き、
    任意のセルに登録・変更したい画像のアドレスを登録する

2.リンク先表示ラベル
   ⇒画像登録・変更ボタンで登録した任意のセルを参照し
    ハイパーリンクのアドレスを表示する
   (ハイパーリンク登録されているか確認用)

3.画像表示ボタン
   ⇒画像登録・変更ボタンで登録したハイパーリンク先画像を
    別ウィンドウで表示する

ということを行いたいです。
ヒント等でも構いませんので、どなたかご教授頂ければ幸いで御座います。
宜しくお願い致します。

【75760】Re:VBAでハイパーリンク制御
発言  カリーニン  - 14/7/1(火) 20:05 -

引用なし
パスワード
   ちょっと意味がつかみきれてないのですが、ファイルやフォルダを
起動するのは

CreateObject("Shell.Application").ShellExecute "ファイルやフォルダのパス"

でいけます。
画像ファイルを表示するのにアプリケーションをデフォルトのものと違うものを指定する
場合はちょっとコードが違ってきます。

【75761】Re:VBAでハイパーリンク制御
質問  ゆーあ  - 14/7/2(水) 17:22 -

引用なし
パスワード
   カリーニン さん

コメントありがとうございます。
又、説明不足で大変申し訳御座いません。


それに多く望みすぎた気がしますので、
まず質問を絞ります。

フォーム上のコマンドボタンを押すことで、
画像が保存されているフォルダ(仮に、C:¥画像としてます)を開き、
その後、手動で画像フォルダに保存した画像を選択すると、
任意のセルに、画像のパス名(C:\画像\〇〇.jpg)を表示することは出来ますでしょうか。

更に欲を言えば、ハイパーリンクに出来ればと考えてます。
宜しくお願い致します。

【75762】Re:VBAでハイパーリンク制御
発言  カリーニン  - 14/7/2(水) 20:51 -

引用なし
パスワード
   >フォーム上のコマンドボタンを押すことで、
>画像が保存されているフォルダ(仮に、C:¥画像としてます)を開き、

これは↓でいけます。

CreateObject("Shell.Application").ShellExecute "ファイルやフォルダのパス"

>その後、手動で画像フォルダに保存した画像を選択すると、
>任意のセルに、画像のパス名(C:\画像\〇〇.jpg)を表示することは出来ますでしょうか。
>更に欲を言えば、ハイパーリンクに出来ればと考えてます。

これはエクセルの制御の外にありますので不可能だとおもいます。APIを使えば出来るのかもしれませんが
分かりません。
ただ、ダイアログで特定のフォルダ内の特定の拡張子のファイルをユーザーに選択させ、選択したファイル
に対して処理を行う、というのは可能です。

参考HPです。
ht tp://officetanaka.net/excel/vba/file/file02.htm
Sample7の二つ目です。

これと
Sample3
>任意のフォルダを開く

を組み合わせます。

セルにハイパーリンクを埋め込むのはマクロの自動記録が参考になると思います。

【75763】Re:VBAでハイパーリンク制御
発言  γ  - 14/7/2(水) 21:34 -

引用なし
パスワード
   横から失礼します。

> 画像が保存されているフォルダ(仮に、C:¥画像としてます)を開き、
> その後、手動で画像フォルダに保存した画像を選択すると、
> 任意のセルに、画像のパス名(C:\画像\〇〇.jpg)を表示することは出来ますでしょうか。
のところは、こんな感じでどうですか?

Sub sample()
  Const myFolder As String = "画像のフォルダ名をここに書く"
  Dim fname
  Dim currentfolder As String

  'current folderを退避
  currentfolder = CurDir

  'folderを画像フォルダに変更
  ChDrive myFolder
  ChDir myFolder

  fname = Application.GetOpenFilename("画像 Files (*.jpg), *.jpg")
  If TypeName(fname) = "Boolean" Then Exit Sub
  
  ActiveCell.Value = fname  '★ ActiveCellに画像のファイル名を書き込む

  'current folderを復旧
  ChDrive currentfolder
  ChDir currentfolder
End Sub

★のところですが、まず、ハイパーリンクを張る作業をよく観察して下さい。
その機能で欠けているのか何かをよく考え、
本当に必要な機能だけ追加なり修正なりするように考えてください。

また、マクロの作成には、既にご指摘のとおり、まずマクロ記録をとって、
その意味を調べたりする作業を自分でして下さい。
かなりの部分がそのまま使えたりするはずです。

【75764】Re:VBAでハイパーリンク制御
発言  γ  - 14/7/2(水) 22:55 -

引用なし
パスワード
   >  If TypeName(fname) = "Boolean" Then Exit Sub
のところですが、フォルダを復旧せずに抜けてしまっているので、
修正してください。

【75765】Re:VBAでハイパーリンク制御
発言  ゆーあ  - 14/7/3(木) 18:36 -

引用なし
パスワード
  
カリーニン さん
γ さん

コメントありがとうございます。
大変助かります。

私としても、マクロ記録をしながら意味を調べたりして
行っておりますが、まだ初心者ですので上手く行きません。


γ さん:
>>  If TypeName(fname) = "Boolean" Then Exit Sub
>のところですが、フォルダを復旧せずに抜けてしまっているので、
>修正してください。

修正試みましたが、力及ばずでした。

【75766】Re:VBAでハイパーリンク制御
発言  カリーニン  - 14/7/3(木) 20:01 -

引用なし
パスワード
   横横。

>修正試みましたが、力及ばずでした。

Sub sample()
  Const myFolder As String = "画像のフォルダ名をここに書く"
  Dim fname
  Dim currentfolder As String

  'current folderを退避
  currentfolder = CurDir

  'folderを画像フォルダに変更
  ChDrive myFolder
  ChDir myFolder

  fname = Application.GetOpenFilename("画像 Files (*.jpg), *.jpg")
  If TypeName(fname) = "Boolean" Then
    'current folderを復旧
    ChDrive currentfolder
    ChDir currentfolder
    Exit Sub
  end if
  
  ActiveCell.Value = fname  '★ ActiveCellに画像のファイル名を書き込む

  'current folderを復旧
  ChDrive currentfolder
  ChDir currentfolder
End Sub

または

Sub sample()
  Const myFolder As String = "画像のフォルダ名をここに書く"
  Dim fname
  Dim currentfolder As String

  'current folderを退避
  currentfolder = CurDir

  'folderを画像フォルダに変更
  ChDrive myFolder
  ChDir myFolder

  fname = Application.GetOpenFilename("画像 Files (*.jpg), *.jpg")
  If TypeName(fname) <> "Boolean" Then    
    ActiveCell.Value = fname  '★ ActiveCellに画像のファイル名を書き込む
  End If
  'current folderを復旧
  ChDrive currentfolder
  ChDir currentfolder
End Sub

【75767】Re:VBAでハイパーリンク制御
お礼  ゆーあ  - 14/7/4(金) 8:53 -

引用なし
パスワード
  
カリーニン さん
γ さん

大変ありがとうございます。
希望通りの動作が出来ました!
感謝感激です!

引き続きの動作については、
少し自分で試行錯誤してみます!
ありがとうございました!

1187 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free