[[20100213185624]] 『リンクのホルダ名の変更』(つる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リンクのホルダ名の変更』(つる)

A1を「='C:\Documents\PCUser\デスクトップ\データ\2009\[02.xls]Sheet1'!A1」の様にリンクさせています。

A2に2008と入力すると数式中の2009が2008に変化するように設定できないでしょうか?

エクセル2003年使用

 『リンクのホルダ名の変更』(つる)

A1のリンクを下記の用に設定しています。

='C:\Documents\PCUser\デスクトップ\データ\2009\[02.xls]Sheet1'!A1

A2に2008と入力すると数式中の2009が2008に変化するように設定できないでしょうか?

エクセル2003年使用
 


 セルに入力するのではなく
 Ctrl + H で置換してはどうでしょう?

 (HANA)

 有難うございます。
 早速やって見ます。


 VBAでユーザー定義関数を作成する方法です。

 標準のジュール(Module1)に

 '=============================================================
 Function getoutrng(ByVal bkpath As String, ByVal shtnm As String, ByVal rng As Range) As Variant
    Dim sql As String
    Dim radd As String
    Dim rs As Object
    getoutrng = [na()]
    If open_ado_excel(bkpath) = 0 Then
       If InStr(rng.Address(False, False), ":") = 0 Then
          radd = rng.Address(False, False) & ":" & rng.Address(False, False)
       Else
          radd = rng.Address(False, False)
       End If
       sql = "SELECT * FROM [" & shtnm & "$" & radd & "]"
       If get_exec_sql(sql, rs) = 0 Then
          getoutrng = rs.fields(0).Value
          On Error Resume Next
          rs.Close
          On Error GoTo 0
          Call close_ado
          Set rs = Nothing
       End If
    End If
 End Function

 別の標準モジュール(Module2)にADO関連プロシジャー群

 '=============================================================
 Option Explicit
'==============================================================================
 Private cn As Object
 '==============================================================================
 Function open_ado_excel(book_fullname As String) As Long
    Dim link_opt As String
    On Error Resume Next
    link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source=" & book_fullname & ";" & _
              "Extended Properties='Excel 8.0; HDR=No'"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open link_opt
    open_ado_excel = Err.Number
    On Error GoTo 0
 End Function
 '==============================================================================
 Sub close_ado()
    On Error Resume Next
    cn.Close
    Set cn = Nothing
    On Error GoTo 0
 End Sub
 '==============================================================================
 Function get_exec_sql(sql_str, rs As Object) As Long
    On Error Resume Next
    Set rs = cn.Execute(sql_str)
    get_exec_sql = Err.Number
    On Error GoTo 0
 End Function

 関数名     getoutrng

 機能      指定された外部ブックのセルの値を取り出す

 呼び出し形式    =getoutrng(bkpath,shtnm,rng)

 パラメータ

      bkpath 文字列     -- データを取得したいブックのフルパス
      shtnm   文字列     --  bkpathで指定したブックのデータを取得したいシート名
      rng     オブジェクト  --   データを取得したいセル

 使用例

  セルB2 に 
     =getoutrng("C:\Documents\PCUser\デスクトップ\データ\" & $a$2 & "\02.xls","sheet1",A1)

  セルA2には、 2008とか2009と指定してください。

 A2が2008の時は、

  C:\Documents\PCUser\デスクトップ\データ\2008\02.xls  というブックの
 Sheet1というシートにあるセルA1の値を取得できます。

 VBAを知っているなら、試してみてください

 ichinose


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.