Excel VBA質問箱 IV

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

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


32879 / 76734 ←次へ | 前へ→

【49086】Re:パスの指定方法
回答  Kein  - 07/5/22(火) 18:04 -

引用なし
パスワード
   手入力したブック名などは、タイプミスする懸念がありますから、
できるだけ確実な方法を考えます。こんなマクロでどうでしょーか ?
以下の全てを標準モジュールの先頭から入れて下さい。
Set_MyLinkを実行したとき、InputBoxが2回出るのでリンク元・先の
セルを指定します。次にリンク元ブックを選びます。
するとA1セルのあたりにコンボボックスが出ますので、シート名を選んで下さい。

Private MyF As String, Ad1 As String, Ad2 As String

Sub Set_MyLink()
  Dim LkR As Range, MyR As Range
  Dim TbN As String, SAry() As String
  Dim DB As DAO.Database, Tbl As DAO.TableDef
  Dim i As Integer
 
  On Error GoTo ELine
  With Application
   Do
     Set LkR = Nothing
     Set LkR = .InputBox("リンク 元 の" & _
     "セルを一つ選択して下さい", Type:=8)
   Loop While LkR.Count > 1
   Set MyR = .InputBox("リンク 先 の" & _
   "セル範囲を選択して下さい", Type:=8)
   MyF = .GetOpenFilename("エクセルブック(*.xls),*.xls", _
   , "リンク元のブックを選択して下さい")
   If MyF = "False" Then GoTo ELine
  End With
  On Error GoTo 0
  Ad1 = LkR.Address(0, 0): Ad2 = MyR.Address
  ReDim SAry(0): SAry(0) = "[シートを選択]"
  Set DB = DBEngine.Workspaces(0) _
  .OpenDatabase(MyF, False, True, "Excel 8.0;HDR=NO")
  For Each Tbl In DB.TableDefs
   TbN = Left$(Tbl.Name, InStr(1, Tbl.Name, "$") - 1)
   If IsError(Application.Match(TbN, SAry, 0)) Then
     i = i + 1: ReDim Preserve SAry(i)
     SAry(i) = TbN
   End If
  Next
  With ActiveSheet.DropDowns.Add(0.1, 0.1, 100, 15)
   .List = SAry()
   .OnAction = "Go_Link"
   .ListIndex = 1
  End With
  DB.Close: Set DB = Nothing: Erase SAry
ELine:
  Set LkR = Nothing: Set MyR = Nothing
End Sub

Sub Go_Link()
  Dim x As Variant
  Dim Snm As String, LkS As String
 
  x = Application.Caller
  If VarType(x) <> 8 Then Exit Sub
  With ActiveSheet.DropDowns(x)
   If .ListIndex < 2 Then Exit Sub
   Snm = .List(.ListIndex)
   .Delete
  End With
  LkS = "='" & Replace(MyF, Dir(MyF), "[" & Dir(MyF) & "]") & _
  Snm & "'!" & Ad1
  Range(Ad2).Formula = LkS
End Sub

3 hits

【49061】パスの指定方法 ミク 07/5/22(火) 9:48 質問
【49073】Re:パスの指定方法 通りすがり 07/5/22(火) 14:59 発言
【49086】Re:パスの指定方法 Kein 07/5/22(火) 18:04 回答
【49087】Re:パスの指定方法 Kein 07/5/22(火) 18:07 発言
【49090】Re:パスの指定方法 ミク 07/5/22(火) 19:40 お礼

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