• ベストアンサー

共有ブックのリンクについて

以下のようなマクロを作成しました 1.Sheet2をコピーする(新規ブック) 2.Sheet1のA1のファイル名で保存する(入力済) 3.A1にハイパーリンクを設定する 「ブックを共有」にしたら(3)のハイパーリンクの 設定でエラーが出るようになってしまいました。 で質問ですが (1)共有ブックはハイパーリンクが設定できないのでしょうか?   マクロが間違っている?    何かパラメータが足りない?   そんなことできない? (2)設定できないとしたら、誰も使用しないような深夜に   ブックの共有を解除し、リンクを貼り付けるマクロを実行するということは可能でしょうか? わかりにくい質問で申し訳ありませんが教えてください。 よろしくお願いします。 Sub Macro1() Worksheets(2).Activate Sheets(2).Copy ActiveWorkbook.SaveAs Filename:="A1ファイル名" ActiveWindow.Close Worksheets(2).Activate ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), Address:="A1ファイル名" End Sub

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

こんにちは。 (1)は既に回答が出てますので割愛して、(2)はExcelだけでは無理ではないかと思います。 共有中かどうかを判断して、マクロを実行するって感じのサンプルです。実際に共有環境がないので、共有環境で上手く動くかは確認出来てません。 必ずコピーブック等のテスト環境で試して下さい。 Sub Test() Dim Users, wb As Workbook, myRange As Range Dim saveFlg As Boolean  On Error GoTo myExit:  '警告を止める  Application.DisplayAlerts = False  '画面を止める  Application.ScreenUpdating = False  With ThisWorkbook   'ユーザーが複数の場合は何もしない   Users = .UserStatus   If UBound(Users, 1) > 1 Then Exit Sub   saveFlg = .MultiUserEditing   '共有なら解除する   If saveFlg Then .ExclusiveAccess   'ブックを追加   Set wb = Workbooks.Add(xlWBATWorksheet)   '保存するファイル名のあるセル   Set myRange = .Worksheets(1).Range("A1")   'コピー   .Worksheets(2).Cells.Copy   wb.ActiveSheet.Cells.PasteSpecial xlPasteAll   wb.ActiveSheet.Range("A1").Select   Application.CutCopyMode = False   'コピーを保存   wb.SaveAs FileName:=myRange.Text   wb.Close   'ハイパーリンクセット   .Worksheets(1).Hyperlinks.Add Anchor:=myRange, _           Address:=myRange.Text   'もともと共有なら共有で保存   If saveFlg Then     .SaveAs FileName:=.FullName, AccessMode:=xlShared   Else     .SaveAs FileName:=.FullName   End If  End With myExit:  Set wb = Nothing: Set myRange = Nothing  Application.DisplayAlerts = True  Application.ScreenUpdating = True End Sub

Fat01ton
質問者

お礼

>(2)はExcelだけでは無理ではないかと思います そうですか?無理ですか?残念です。 マクロはお書きいただきありがとうございます。 たとえ、共有環境でうまく動かなくても マクロの勉強として利用させていただきます。 まずはチャレンジしてみます。

その他の回答 (1)

回答No.1

(1)だけ。ヘルプの「共有ブックの制限」に記載されています。と思います。

Fat01ton
質問者

お礼

共有ブックにしてしまうとハイパーリンクが 選択できないようになってしまうことは知っていましたがもしかしたらマクロを使えば方法があるのではないかと 思い質問させていただきました。 やっぱり共有ブックではリンクは出来ないのでしょうか? ご回答ありがとうございます。

関連するQ&A

  • ブック間のシート移動

    EXCEL VBA初心者です。 ブックAのシートAをブックBのシートの一番左側に移動させようと思います。 以下を実行するとエラーが出ますがなぜでしょうか? エラーの原因と対策方法を教えて下さい。 Sub シート移動() Worksheets("シートA").Move _ Before:=Workbooks("ブックB.xls").Sheets(1) End Sub ブックAはブック名が毎回変わります。 ブックAはメール添付を開いたブックです。 ブックAはシートがシートAしかありません。 シートAは名前が変わりません。 マクロコードはブックBあるいは個人用マクロブックに置きます。 よろしくお願いします。

  • excelマクロボタンのリンク先の表示方法

    よろしくお願いします。 excel2010にてマクロボタンを設定し、特定のsheetに飛ぶよう設定しました。 ●そのボタンにマウスポインタを持って行った際にリンク先が表示されるように  することは可能でしょうか? ●このボタンをクリックしたらどこへ飛ぶか、というのがわかるようにしたいの  ですが、良い方法がありましたら教えてください。 お願いいたします。 Sub マクロ名() Workbooks.Open ThisWorkbook.Path & "\ファイル名.xls" Worksheets("シート名").Activate End Sub

  • ブック名を変数にしたらアクティブになりません。

    色々と調べたり試したのですが、どうしても判らないので質問させてください。 Excel2002でマクロを組んでいます。 セル上の数値を使って、ブック名を変数に格納しました。 したい事は、「DataBase.xls」のCalendarシートの内容を 「07年6月売上.xls」のとあるシートに値貼り付け です。 格納した変数 Dim Uriage As String Uriage = Worksheets("設定").Range("A4") & "年" & Worksheets("設定").Range("B5") & "月売上.xls " 上記のブックを開き、マクロを記述したブックに戻り、 再度上記のブックをアクティブにしようとすると 「有効範囲にありません」とメッセージが出ます。 デバッグ状態で記述を見てみると 1 Windows("DataBase.xls").Activate (←マクロ記述のブック名) 2 Sheets("Calendar").Select 3 Range("B7:H7").Select 4 Selection.Copy 5 Windows(Uriage).Activate (←変数格納したブック名) 5番でとまっています。 ですが、オンマウスにするとちゃんと「"07年6月売上.xls"」と表示が出ます。 それ以前に、ファイルを開くことは出来てるのに・・・・ いったいどういう事なのか、どうかご教示ください。 宜しくお願いします。

  • マクロで予定表 セルに色を塗る

    下記のような表があります。 (1)シート名 予定表    A      B     C 1  日付    曜日  予定 2 2008/11/21 金   ビデオ返却 3 2008/11/22 土   飲み会 4 2008/11/23 日   デート ・    ・     ・     ・ ・    ・     ・     ・ ・    ・     ・     ・ (2)シート名 設定 A1 =TODAY() A2 =MATCH(A1,予定表!A:A,0) <<やりたいこと>> 昨日の日付と曜日と予定のセルをグレーに塗りたい。 ブックを開いた時に日付が変わっていれば自動で実行する。 現在のマクロは以下です。 Sub Auto_Open() Worksheets("予定表").Activate ActiveWindow.ScrollRow = Worksheets("設定").Range("A2") Range("A1").Select End Sub いろいろ調べましたが解りませんでした。 よろしくお願いします。

  • ブックのopenについて

    デスクトップにファイル名「A.xls」と「B.xls」が有ります。「B.xls」はファイル名が変わるため「A.xls」のsheet1のセルA1に「B.xls」のファイル名を記載して「A.xls」と「B.xls」を共に開き「A.xls」にマクロを記述して処理をしています。この処理をする際に最初から「B.xls」を開かずにマクロでセルA1に記載したファイル名を使って「B.xls」ファイルを開くための記述を教えてください。現在のマクロの最初の部分は以下のようになっています。よろしくお願いします。 Sub Macro1() Dim nextyearbookname As String nextyearbookname = Range("A1") & ".xls"   ThisWorkbook.Activate Worksheets("sheet1").Range("B20:B21").Select Selection.Copy  Windows(nextyearbookname).Activate

  • エクセルのマクロをブック全体に

    マクロに関してはずぶの素人です、Q&Aのサイトで目的にかなったものを見つけ 設定したら結果は満足するものでした。 「シートを保護した状態で、グループ化の表示・非表示を切り替えるマクロ」 Sub Auto_Open() With Worksheets("Sheet1") .EnableOutlining = True .Protect UserInterfaceOnly:=True End With End Sub これをブック全体に反映できるマクロを教えて下さい。 ブック内のシート数は多いもので10シートほど、シート名は和英混合です。 ブックの数は40程有り全てのシートにマクロを設定するのは途方もなく 時間が掛かりそうで困っています。 当方のエクセルはExcel2007SP3です、宜しくお願いします。

  • リンク先のブックのシートを、同じブック内にコピー

    Web上にExcelファイルが置いてあります。 ハイパーリンクでこのファイルへのパスを設定し、 クリックすると、別ブックでこのExcelファイルが開かれます。 これを、別ブックではなく、ハイパーリンクを設定したブック内に、 リンク先ファイルのシートをコピーさせることは可能でしょうか。 よろしくお願いします。

  • ExcelVBAで他ブックのマクロを動かす

    Aというブックのマクロを動かし、別ブックのコマンドボタンに埋め込まれているマクロの動作を行いたいのですがうまく行きません。 下記がコードになります。 Option Explicit Public strName As String Public strPath As String Public xlApp As Object Public xlBook As Object Public xlSheet As Object Public Function テスト処理() 'ファイル名 strName = Worksheets("名前").Range("B2") 'ファイルを置いている場所 strPath = Worksheets("名前").Range("B3") Set xlApp = CreateObject("Excel.Application") '別Excelを開く Set xlBook = xlApp.Workbooks.Open(strPath, True) 'シートの選択 Set xlSheet = xlBook.Worksheets("操作画面") xlApp.Visible = True xlApp.UserControl = True xlSheet.Activate setブック処理 End Function Public Sub setブック処理() '別ブックのマクロを動かす Application.Run (strName & "!CmdClick"), ThisWorkbook   End Sub 上記のマクロを動かすと、Application.Runの部分で下記エラーが表示されます。 実行時エラー1004 '別ブック.xls'が見付かりません。ファイル名及びファイルの保存場所が正しいかどうか確認してください。 setで飛ぶ前に別のブックは開けているので、ファイル名や保存場所は正しいと思うのですがエラーが出てしまいます。 宣言の仕方が間違っているのでしょうか? ちなみに、別ブックのコマンドボタンのマクロは下記の名称なので、マクロ名の間違いという事も無いと思います。 Private Sub CmdClick() ~処理~ End Sub

  • エクセル マクロで別のブックに貼り付けたい!

    作成したシートを別のブック(既存)にマクロを使って貼り付けたい のですが、いろいろ調べた結果以下のようにはすることができました。 ---------------------------------------------------------------- Sub SaveSheet() Dim sFileName As String 'ファイル名の設定 sFileName = "C:\a\test.xls" 'シートをコピーして新規ブックを作成 Sheets(Array("Sheet1", "Sheet2")).Copy '作成したブックの保存 ActiveWorkbook.SaveAs sFileName End Sub ---------------------------------------------------------------- これはとあるサイトで見つけたもので、私自身が作成したものでは ありません。 このマクロの問題は、 ○あらたにブック(シート)が作成されること (マクロ実行時は上書きになるので、変更できなくても使えないわけ ではない) ○元データはシート丸ごとであり、セル範囲を選択できない。 ○貼り付けるシートにおいても、任意の場所を起点とできない。 ということです。 整理しますと、『作成したシートの任意のセル範囲を、別に存在する ブックに、任意のセルを起点として貼り付けたい』 ということです。 どうかよろしくお願いします。m(_ _)m

  • excelマクロですべてのハイパーリンク解除したい

    excel2016で、ワークシート内のハイパーリンクをすべて解除したいと思います。 すべて削除するマクロは Sub Sample()  With ThisWorkbook.Worksheets("Sheet1")   .Hyperlinks.Delete 'ハイパーリンク削除  End With End Sub なのですが、これを解除の命令に変えて Sub Sample()  With ThisWorkbook.Worksheets("Sheet1")  .ClearHyperlinks 'ハイパーリンク解除  .Font.Underline = False '文字のアンダーライン解除  .Font.ColorIndex = xlAutomatic '文字色を自動設定  End With End Sub とするとエラーになってしまいます。 どのようにすれば良いでしょうか?

専門家に質問してみよう