2017-08-13 51 views
-1

我想根據酒店名稱滾動列表自動編輯我的Excel表單的鏈接。從滾動列表中自動更新路徑

到目前爲止,我已成功地創建一個自動化路徑(見圖片附後),但我並沒有設法儘快細胞(「A1」)(滾動列表)被修改

更新鏈接File name path 這就是我心目中的宏:

  1. 記住前面的路徑,
  2. 新路徑替換它跟隨小區的變化「A1」
  3. 更新

見我下面草案:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim KeyCells As Range 
    Set KeyCells = Range(A1) 

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
      Is Nothing Then 
    Run Macro_2 
    End If 
End Sub 

Sub Macro_2() 

    Range("F2").Copy 
    Range("F1").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    ChDir Dir(Range("F2").Value) 
    ActiveWorkbook.ChangeLink Name:=Dir(Range("F1").Value) _ 
     , NewName:=Dir(Range("F2").Value) _ 
     , Type:=xlExcelLinks 

End Sub 

錯誤:路徑找不到

預先感謝您的幫助!

+0

在你的代碼的哪一行的註釋是你的錯誤?我期望'運行Macro_2'導致錯誤。省略「運行」。你可能會說'Call Macro_2',但「Call」是多餘的。 'Application.Intersect(KeyCells,Range(Target.Address))'不應該引起錯誤,但是它是複雜的。 「目標」已經是一個範圍。因此'Application.Intersect(KeyCells,Target)'會做同樣的工作。 – Variatus

+0

'ChDir'和'Dir'是兩個不同的命令。我建議測試'Dir(Range(「F2」)。Value)'返回的結果。你的意思可能是'ChDir Range(「F2」)。Value',並繼續在下一條指令中使用'Dir'函數類似的錯誤。 「Dir」的正確使用是檢查路徑是否存在,如果不存在則不要繼續使用該路徑。 – Variatus

+0

錯誤出現在Macro_2()上,它不能識別ChDir Dir(範圍(「F2」)。值,它也不識別ChDir範圍(「F2」)。值請注意,單元格F2包含以下內容: = 「C:\用戶\ h5307-RM \桌面\卡薩布蘭卡\酒店\」 &VLOOKUP($ A $ 1,設置$ A $ 2:$ C $ 3,2,FALSE)& 「\」 &Sheet 1中A1&「\預算\ [! Budget.xlsx] Sheet1'!$ A $ 1「 –

回答

0

F1和F2中的值不是路徑。路徑必須在文件名之前結束,當然不能在該文件中包含工作表和該工作表中的單元格地址。

0

這是你的代碼重寫(除去非必要的代碼)

,請閱讀代碼

Private Sub Worksheet_Change(ByVal Target As Range) 

    If Application.Intersect(Range("A1"), Target) Is Nothing Then Exit Sub 

    Range("F2").Copy 
    Range("F1").PasteSpecial _ 
     Paste:=xlPasteValues, _ 
     Operation:=xlNone, _ 
     SkipBlanks:=False, _ 
     Transpose:=False 

    ' this value is in F1 and in F2 (it is NOT a valid filename) 
    ' C:\Users\h5307-rm\Desktop\Casablanca\hotels\Casablanca\Ibis El Jadida\Budget\[Budget.xlsx]Sheet1'$A$1 

    ' F2 contains an invalid path name ... ChDir command will fail 
    ChDir Dir(Range("F2").Value) 

    ' F1 and F2 contain invalid path names, this command will fail 
    ActiveWorkbook.ChangeLink _ 
     Name:=Dir(Range("F1").Value), _ 
     NewName:=Dir(Range("F2").Value), _ 
     Type:=xlExcelLinks 

End Sub 
+0

非常感謝。我應該如何寫路徑+文件名纔能有效? –

+0

與你在F2中創建無效路徑的方式相同,但省略了不好的部分。您已經知道正確的路徑應該是什麼(您正在處理的文件在您的計算機上) – jsotola