• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルを開くマクロで質問です)

ファイルを開くマクロで質問です

このQ&Aのポイント
  • セルC20にファイルのパスが入力されています。セルI9~I18 M9~M18でダブルクリックしたときにC20セルにあるパスをひらくにはどうしたらよいでしょうか?
  • C20のパスがすでに開いている時、エラーなどにならずにそのエクセルシートを開く方法はありますでしょうか?読み取り専用や、一度保存して閉じるとかではなくそのまま開いているシートにとびたいです。もしこれが無理であれば保存してとじて再度開き直す方法でも大丈夫です。
  • 開いたエクセルシートの【計測データ読み込み】という名前のシートのD列の一番下のデータをダブルクリックしたセルに貼り付ける方法も分かれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

private sub WorkSheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean)  dim myFile as string  if application.intersect(target, range("I9:I18,M9:M18")) is nothing then exit sub  cancel = true  myfile = range("C20").value  if dir(myfile) = "" then   msgbox "FILE NOT FOUND"   exit sub  end if ’開いていれば表に出す  on error goto errhandle  workbooks(dir(myfile)).activate  target.value = activesheet.range("D65536").end(xlup).value  exit sub errhandle: ’開いてなければ開く  workbooks.open myfile  resume end sub >このマクロの続きで こうやってダラダラといつまでもついでについでにのご相談が随分多いので、原則としてついでのご質問は回答しない事にしています。 続きのご質問に気持ちが行ってしまい、いつのまにか最初のご相談の解決が無かったことになってしまうのもイヤですしね。 当初の目的が果たせたら、このご相談はしっかり解決で一度閉じてから、新たなご質問内容は新しいご相談として「詳しい状況をキチンと添えて」別途投稿するようにしてください。 >開いたシートのD列の一番下のデータ 開いたのは「ブック」です。 そのブックの「どのシート」が今開いているかは、何も規定されていない事に留意してください。 それとも?シートの指定は全くしないまま、「成り行きで今開いている(不定の)シート」を無条件に対象にしてよかったのでしょうか。 >ダブルクリックしたセルに貼り付ける コピーして貼り付けなきゃいけないのか、それとも値を転記してくれば良いのか、どういう状況でしょうか。それによって適当なマクロの書き振りも変わってくる事に留意してください。

その他の回答 (3)

回答No.3

>セルI9~I18 M9~M18でダブルクリックしたときに >C20セルにあるパスをひらくにはどうしたらよいでしょうか? > 現在はどのセルでダブルクリックをしてもC20のパスが開いてしまいます。 適当な場所に If Target.Row < 9 Or Target.Row > 18 Or Target.Column < 12 Or Target.Column > 13 Then Exit Sub を入れる。 >またC20のパスがすでに開いている時、エラーなどにならずに >そのまま開いているシートにとびたいです。 MsgBox filepath & vbCrLf & "は既に開いています。" '★ を Workbooks(i).Activate にする。 あと、蛇足ですが If filepath = Workbooks(i).FullName Then は If Ucase(filepath) = UCase(Workbooks(i).FullName) Then にすべき。 このようにして「大文字小文字を区別しない」ようにしておかないと、大文字小文字を区別してしまって、既に開いているブックを「開いていないと判断してしまう」場合がある。

yyrd0421
質問者

補足

ありがとうございます。 まだまだ至らぬところだらけで、ネットで拾ってきたマクロをかき消ししてたので、めちゃくちゃなマクロですよね。すみません。 ご回答とアドバイスまで頂きありがとうございます。 このマクロの続きで開いたシートの列の一番下のデータを ダブルクリックしたセルに貼り付ける方法の方はお分かりになりますでしょうか?

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

やりようは様々あると思いますが private sub WorkSheet_BeforeDoubleClick(byval Target as excel.range, Cancel as boolean)  dim myFile as string  if application.intersect(target, range("I9:I18,M9:M18")) is nothing then exit sub  cancel = true  myfile = range("C20").value  if dir(myfile) = "" then   msgbox "FILE NOT FOUND"   exit sub  end if ’開いていれば表に出す  on error goto errhandle  workbooks(dir(myfile)).activate  exit sub errhandle: ’開いてなければ開く  workbooks.open myfile end sub

yyrd0421
質問者

補足

昨日に引き続き、ご回答ありがとうございます。 目的が果たせました。 このマクロの続きで開いたシートのD列の一番下のデータを ダブルクリックしたセルに貼り付ける方法などはお分かりになりますでしょうか?

  • takncom
  • ベストアンサー率16% (15/91)
回答No.1

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) のあとに If Target.Row = 1 And Target.Column = 1 Then Exit Sub というようなのを入れて 指定したセル以外は、抜けるようにすればよいです。

yyrd0421
質問者

お礼

お礼が大変遅くなってしまい申し訳ありませんでした。 ありがとうございます。