こんにちは。よろしくお願いします。
EXCELの97でも2000でも2002でも構わないのですが、

EXCELのフォームツールバーある「ボタン」をつかって
ボタンをクリックすると特定のフォルダにジャンプする
という操作をしたいのですが・・・・

今は、とりあえず任意のセルに、ハイパーリンクを作成し、
C:\My Documents\表計算
というような、ハイパーリンクを作っていて、実行すると
Explorerが起動して、表計算フォルダに中に入っている
ファイルを選択するという形です。

そして、キー登録のマクロで、ハイパーリンクのところを
クリックする。というのを作成し、ボタンをハイパーリンクの上に
作成し(ハイパーリンクの文字をボタンで隠しているような状態です)
ボタンにマクロを登録しているような状態です。(分かっていただけますか?)

そこで、質問は
「ボタンに直接ハイパーリンクの記憶をさせたい。」
(任意のセルにハイパーリンクを作らなくてもいいようにしたい)

ということです。きっとマクロを記述できれば良いのでしょうが、
全くマクロに対しては、知識がありません。
意味がわからなければ、いくらでも、補足しますので、よろしくお願いします。

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

A 回答 (4件)

失礼しました。

少し足りません。
Sub Macro1()
Shell "C:\WINDOWS\explorer C:\My Documents", 1
End Sub
でした。カンマと1を追加してください。
1 元のサイズ
2 最小化
3 最大化
あと0、4、6もあります。
    • good
    • 0
この回答へのお礼

できましたっ。
本当にありがとうございます。
2度にわたっての回答、ほんとにほんとに
感謝します。
また何かありましたら、よろしくお願いします。

お礼日時:2002/02/07 21:13

マクロですが下の書き方でいけます。



Sub Macro1()
Shell "C:\WINDOWS\explorer C:\My Documents"
End Sub

例として、C:\My Documentsを開くようになっています。
この部分を変更すると希望の場所へ行きます。
不明な点は質問ください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私がやると、My Documentsがタスクバーに最小化になって出てきます。
何が悪いのでしょうか?
書いていただいた、マクロをそのままコピーペーストをしたのですが・・・

よろしくお願いします。

お礼日時:2002/02/06 12:48

質問で行いたいことは、指定(もしくは任意)のフォルダのExcelファイルを開きたい(またはファイル名を取得したい)ということのように思えますが・・・ハイパーリンクをからめる必要もないような気がしますが。



>フォームツールバーある「ボタン」
とありますが、使い勝手からすると、コントロールツールボックスのコマンドボタンがいいような気がします。表示→Visual Basic で出てくるツールバーの『トンカチとスパナ』が組み合わさったアイコンを押せばコマンドボタンが選択できます。

コマンドボタンを選択してシート(例えばSheet1)上にコマンドボタンを作成し、このボタンをダブルクリックするとVBE(Visual Basic Editor)画面に移り、

Private Sub CommandButton1_Click()

End Sub

ができると思います。

下の『Dim から End If の行』までをコピーして貼り付けてみてください。
シートに戻り、デザインモードを解除し(三角定規のようなアイコンを押す)、コマンドボタンを押してみます。
質問のような動きをすると思います。 ご参考に。


Private Sub CommandButton1_Click()
  Dim myFilename As String  '選択したファイル名

  'ディレクトリを変える
  ChDir "C:\My Documents\表計算"

  'ファイルを指定する
  myFilename = Application.GetOpenFilename("Excel File(*.xls), *.xls")

  'キャンセルでなかったら開く例
  If myFilename <> "False" Then
    Workbooks.Open Filename:=myFilename
  End If
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
同僚に教えなければならなかったので、身近な
ハイパーリンクを選んで、マクロを避けてしまいました。
やっぱり、マクロを使わないと出来ませんか?
一応私自身では出来たのですが、なんて説明しようかな?
でもでも、本当にありがとうございます。
nishi6さんには何度かお世話になっていて・・。
いつも感謝しています。

お礼日時:2002/02/06 12:46

エクセル2000を使っています。


我流かもしれませんが、先ずコマンドボタンクリックし、好きな所にボタンを作ります。
右クリック⇒プロパティでボタンを編集。
数式バーを消して、ボタンを右クリックするとハイパーリンクが設定できますが。
わかり難かったらごめんなさい。特にプロパティとかは何で日本語にならないんでしょうね。専門の方の回答を私も待っています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
本当にそのとおりですねっ。
ありがとうございます。

お礼日時:2002/02/06 12:41

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

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

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

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

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

Qエクセルのフォームのボタンにハイパーリンクを設定

エクセルのフォームのボタンにハイパーリンクを設定
したい場合はどうすればいいのでしょうか?
ボタンを押せば、メールを送信するように
設定したいのですが、
今はオートシェイプで設定しています。
ハイパーリンクで設定しようと思っても
ボタンを選択すると、ハイパーリンクの色が消え
選択出来ない状態です。

Aベストアンサー

フォームのボタンにハイパーリンクを設定することはできないと思います。
マクロを使えば可能ですが、マクロはどうでしょうか?

たとえばこんな感じです。
Sub アプリ起動
Application.ScreenUpdating = False
On Error Resume Next
Range("A1").Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
End Sub

A1セルにハイパーリンクを設定しています。
このマクロをボタンのマクロとして設定します。

純粋に見た目の問題でしたら、書式設定でそれらしくするのが良いと思います。

参考URL:http://jisenjuku.hp.infoseek.co.jp/free/060410.htm

Qコマンドボタンをクリックでシートからシートに移動させたい

sheet1にコマンドボタンをつくり、これをクリックすると
sheet2に移動するという風にしたいです。
sheet1は名前が 入力画面
sheet2は名前が 合計 となっています。
この時のコードをどう入力すべきか教えていただきたいです。
Private Sub CommandButton1_Click()と
End Sub
の間に何を入力するべきか正確に教えてください。
よろしくお願いします。

Aベストアンサー

シート【合計】をアクティブにするのなら

Private Sub CommandButton1_Click()
Worksheets("合計").Activate
End Sub

とか?

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QHyperlink関数をクリックしてくれるマクロ

こんにちわ! どなたか教えてくださいませんか?

EXCELのセル“A1”にHyperlink関数が入れてありまして、
隣のセル“B1”に入れた文字を組み込んで、URLを生成し、リンクを作るようになっています。
こんな感じです。

  =Hyperlink("http://●●●"&[B1]&"●●●/")

それで、B1に文字を入れたら、自動的にそのリンク先を開くように、
つまりは、A1にできたリンクをわたしの代わりにクリックしてくれるようなマクロを作りたい
のですが、どうすればいいでしょうか?

いろいろやってみたのですが、どれもエラーになってしまいまして。

どうかよろしくお願いいたします。

Aベストアンサー

HYPERLINK関数はハイパーリンクオブジェクトを生成しないので、通常のマクロではハイパーリンク(ハイパーリンクオブジェクト)として取り扱うことができません。

というワケでチカラワザ:
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける

private sub worksheet_change(byval Target as excel.range)
if target.address <> "$B$1" then exit sub
activeworkbook.followhyperlink application.evaluate(range("A1").formula)
end sub

A1に埋めておくHYPERLINK関数は,ご質問の通りで書いたのでは間違いなのは,実際に試してみればすぐに確認できますね。正しく作成してください。
B1に文字を記入してEnterすると,マクロが作動します。

QExcelのハイパーリンクにマクロを割り当てる方法

ハイパーリンクの挿入で設定した、ハイパーリンクをクリックしてコードを実行する方法が分かりません。1つのシートで複数のハイパーリンクに、異なるコードを設定するにはどのようにすればよいのですか。ご回答宜しくお願い致します。

Aベストアンサー

#1-2、cjです。#2お礼欄を読みました。

> シート上に設定した文字列を誤って変更してしまわないように注意しようと思います。
ハイパーリンクの表示文字列 ≒ セルの値
が、仮に変更されてしまったとしても
  Case "Hoge"
    Call Hoge
の "Hoge" など、指定した文字列とマッチしなければ、
期待するマクロが動作しない、という結果なので、比較的軽い問題で済みますが、
偶然、他のマクロを実行させるキーワードにマッチしてしまうと、
全く期待しないマクロが実行されてしまい、こちらの場合は重篤なトラブルになりかねません。

場合によっては、Excel一般機能の、データの入力規則、等が防衛策に役立つかも知れません。
例えば、文字列値でハイパーリンクを設定した後に、
データの入力規則を新たに設定し、数値(最小値~最大値)を指定しておく、
(勝手に文字列値を設定出来なくなる)とか。
(データの入力規則を設定したセルをコピーし、他のセルの書式のみ貼り付けることで
手数を減らして設定できます)
これに因んだ情報として、以下。

ハイパーリンクの表示文字列 はあくまでも文字列ですから、
仮に、数値を設定したセルの値を拾ってマッチングするには
  Select Case Target.Range.Value
と書き換えてやれば可能です。
次のサンプル7では、
セル値が、
  数値  123
  数字文字列値  "123"
  プレフィクス付の数字文字列  "'123"
3つの場合にマッチします。
' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  Select Case Target.Range.Value
  Case "Hoge"
    Call Hoge
  Case "Piyo"
    Call Piyo
  Case "Fuga"
    Call Fuga
  Case "123"
    Call Hogera
  End Select
  Application.EnableEvents = False
  Application.Goto
  Application.EnableEvents = True
End Sub
' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
または
  Select Case Target.TextToDisplay
と書き換えると
  数字文字列値  "123"
  プレフィクス付の数字文字列  "'123"
にだけマッチして、数値には反応しません。
' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
  Select Case Target.TextToDisplay
  Case "Hoge"
    Call Hoge
  Case "Piyo"
    Call Piyo
  Case "Fuga"
    Call Fuga
  Case "123"
    Call Hogera
  End Select
  Application.EnableEvents = False
  Application.Goto
  Application.EnableEvents = True
End Sub
' ' 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
正確には、セルの値に数値を設定すると、
ハイパーリンクの表示文字列の実態は空の文字列になる、ということです。

こういった特性を利用した設計を考えるなどすれば、
何かの役に立つかも知れませんね。

#1-2、cjです。#2お礼欄を読みました。

> シート上に設定した文字列を誤って変更してしまわないように注意しようと思います。
ハイパーリンクの表示文字列 ≒ セルの値
が、仮に変更されてしまったとしても
  Case "Hoge"
    Call Hoge
の "Hoge" など、指定した文字列とマッチしなければ、
期待するマクロが動作しない、という結果なので、比較的軽い問題で済みますが、
偶然、他のマクロを実行させるキーワードにマッチしてしまうと、
全く期待しないマクロが実行されてしまい、こちらの場合は...続きを読む

Qエクセル マクロでリンク先を開く方法

よろしくお願いします。

仮にあるセルに別ファイルを開くハイパーリンクがはられているとします。このとき以下のようなことをしたいのですが、どうすればよいのでしょうか。

1.まずどのセルにリンクがはられているかを順に調べていくとして、セルにリンクが設定されているか否かを判定するにはどうすればよいでしょうか。
2.次にリンクが設定されているときはそのリンク先のファイルを開くにはどうすればよいでしょうか。

以上です。よろしくお願いします。

Aベストアンサー

例えば、A1セルにハイパーリンクがあるかどうかは、
Range("A1").HyperLinks.Countで、調べられると思います。

リンク先のファイルを開くにはFollow メソッドを使えば良いと思います。

ですから、セル範囲A1:C5を調べて、ハイパーリンクが設定してあれば、リンクを開くには、以下のようにすれば良いかと思います。

Sub test()
Dim rng As Range
For Each rng In Range("A1:C5")
If rng.Hyperlinks.Count > 0 Then rng.Hyperlinks.Item(1).Follow
Next
End Sub

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


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

人気Q&Aランキング