[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『リンクのホルダ名の変更』(つる)
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.