2017-09-13 15 views
2

別のブックのセルへのセル参照を作成しようとしています。下のコードでは、ワークブック名​​とシート名に変数を使用しています。コードが正常に動作けれども、私はタブ= SourceTabVBA式:変数ファイル名と変数シート名

  • にリンクしていますワークブックの

    • SourceFileNamePath =パスと名前は私が

    にリンクするワークブックには、生成された式が機能していません。 SourceFileNamePathSourceTabを正しく参照しているかどうかについては誰にでも考えていますか?

    コードは以下の通りです:

    Cells(destStartRow, destStartCol).FormulaR1C1 = "='[" & SourceFileNamePath & "]" & SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 
    
    +1

    ファイル**の名前**のみを角カッコで囲む必要があります。 '= 'C:\ Temp \ Data \ [Book1.xlsx] Sheet2'!R5C10'。 (設定可能な方法については、[この質問](https://stackoverflow.com/q/46162966/6535336)を参照してください) – YowE3K

    答えて

    3

    あなたはSourceFileNamePathパスを含むという変数を持っている場合は、外部のブック内のシートのセルにアクセスするためのフォーマットがそう

    'path\[filename]sheetname'!cell_reference

    ですファイル名(例:"C:\Temp\Data\Book1.xlsx")の場合は、ファイル名をパスから区切る必要があります。

    次のようなものを使用できます。パスまたはファイル名のいずれかが、任意の単一引用符が含まれている場合(ファイル名がSukhbir's test file.xlsxだった場合など)、それをエスケープする必要があります。

    SourceFileNamePath = "C:\Temp\Data\Book1.xlsx" ' or however you set that variable 
    SourceTab = "Sheet1"        ' or however you set that variable 
    
    Dim SourceFilePath As String 
    Dim SourceFileName As String 
    SourceFilePath = Left(SourceFileNamePath, InStrRev(SourceFileNamePath, Application.PathSeparator)) 
    SourceFileName = Mid(SourceFileNamePath, InStrRev(SourceFileNamePath, Application.PathSeparator) + 1) 
    Cells(destStartRow, destStartCol).FormulaR1C1 = "='" & SourceFilePath & "[" & SourceFileName & "]" & SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 
    

    注意を(つまり、各一重引用符を二重引用符で置き換える必要があります)。これは、Replace機能を使用することによって達成することができます。例:

    Cells(destStartRow, destStartCol).FormulaR1C1 = _ 
               "='" & Replace(SourceFilePath, "'", "''") & _ 
               "[" & Replace(SourceFileName, "'", "''") & "]" & _ 
               SourceTab & "'!R" & sourceStartRow & "C" & sourceStartCol 
    
    +0

    ありがとう、これは完璧に機能しました!私は昨日これを理解しようと3時間以上過ごしました、私は助けを求めてうれしいです。 :)もう一度あなたの助けをありがとう。 –