いろいろ検索したのですが、見つからないので質問させていただきます。
対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。
(例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている)
そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。
つまり、例で言えば、Book2.xlsを開きたいのです。
文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか?
何かいい方法があれば教えてください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1です。
> 参照しているブック以外をすべて閉じるという操作で補うしかないようですね…。
ActiveCell.Formulaと見比べて開けば良いのかも。
Sub Test1()
myLinks = ThisWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(myLinks) Then
s1 = WorksheetFunction.Substitute(ActiveCell.Formula, "[", "")
s1 = WorksheetFunction.Substitute(s1, "]", "")
For i = 1 To UBound(myLinks)
If InStr(1, UCase(s1), UCase(myLinks(i)), 1) > 0 Then
Workbooks.Open myLinks(i)
Exit Sub
End If
Next i
End If
End Sub
---
文字列操作パターンだとこんな感じでもイケるのかなぁ、、、
Sub Test2()
On Error Resume Next
With WorksheetFunction
Workbooks.Open .Substitute(Mid(ActiveCell.Formula, 3, _
.Find("]", ActiveCell.Formula) - 3), "[", "")
End With
End Sub
ありがとうございます。
サンプルマクロをご教授いただいたおかげで、ほぼ目標としたマクロが完成しました!!
papayukaさま、ありがとうございました!!
No.3
- 回答日時:
こんばんは。
>対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。
通常、リンクしているセルが正しい値にならない場合は、
メニュー-編集-リンクの編集 ---値の更新
をすればよいと思います。よほど、数が多くなければ、以下のようなマクロは必要ないと思います。
Sub LinkUpDateMacro()
Dim ar As Variant
Dim v As Variant
ar = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(ar) Then
For Each v In ar
ActiveWorkbook.UpdateLink v, xlExcelLinks
Next v
End If
End Sub
----------------------------------------------------------
ひとつのブックを開くなら、
メニュー-編集-リンクの編集 ---リンク元を開く
で開ければよいと思うのです。リンクしているブックのひとつを、マクロという手段で開けなくてはならないのか、理由が良く分かりません。かなり、複雑なのでしょうか?
たとえば、ダブルクリックして、開くというなら以下のようなコードになります。つまり、ハイパーリンクと同じ役割をしています。
'シートモジュール
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim k As String
Cancel = True
If Target.HasFormula = False Then Exit Sub
k = Target.Formula
i = InStr(k, "[")
j = InStr(i, k, "]")
n = InStr(k, "\")
Application.ScreenUpdating = False
If i > 0 And j > 0 And n > 0 Then
k = Mid$(k, 3, j - 3)
k = Replace(k, "[", "")
On Error Resume Next
Workbooks.Open k
On Error GoTo 0
End If
Application.ScreenUpdating = True
k = Target.FormulaR1C1
If i > 0 And j > 0 Then
Application.Goto k
End If
End Sub
yoko14820です。
>で開ければよいと思うのです。
>リンクしているブックのひとつを、マクロという手段で
>開けなくてはならないのか、理由が良く分かりません。
>かなり、複雑なのでしょうか?
質問の内容に余計な文を加えて混乱させて申し訳ございません。
とどのつまりは、参照元のセルにジャンプするマクロを作成させたかったのです。
同一ブック内であれば、簡単に参照できたものの、それ以外の処理方法を考えていたのです。
サンプルマクロのご提供ありがとうございました。
No.1
- 回答日時:
> 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、
> 正しい値にはなりません。
これは使用する関数によってだと思います。
アクティブセルのって言うより、ブックの参照リンクを開けば良いのでは無いでしょうか?
ヘルプの LinkSources メソッド使用例のほとんどまんまですが、、
Sub Test()
myLinks = ThisWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(myLinks) Then
For i = 1 To UBound(myLinks)
Workbooks.Open myLinks(i)
Next i
End If
End Sub
さっそくの回答ありがとうございます!
今回は参照しているブックのセル値を取り出すのが目的ではなくて、参照しているブック自体を開きたいので、使用する関数うんぬんではないのです…。
LinkSourcesメソッドでの解決方法を伝授いただきありがとうございます!
目的は、そのセルが参照しているブックのみ開きたいので…
この方法の場合は、暫定対策として、参照しているブック以外をすべて閉じるという操作で補うしかないようですね…。
ありがとうございます。
大変参考になりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- Excel(エクセル) excelのindirect関数の別ブック参照について質問です。 1 2022/06/03 15:17
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報