VBA

2016-12-13 3 views
-1

bitte wie kann ich ändern, um dieseVBA

Set historyWb = Workbooks.Open("U:\DB_DATA\HISTORY_LOG.xlsx")

zu relativen Pfad? DB_DATA \ HISTORY_LOG.xlsx

Ich habe zwei Dateien. Wenn ich beide Dateien an einen anderen Ort kopieren möchte, müssen beide noch verbunden sein.

Thx für die Hilfe

Antwort

1

Die Funktion heißt get_relative und es hat einen optionalen Wert, der relativ zu bekommen. Wenn Sie nicht den Wert einzustellen, ist es 1. So ist die testme Modul zurückkehren würde folgendes:

\DB_DATA\HISTORY_LOG.xlsx 
\HISTORY_LOG.xlsx 

Hier kommt der Code:

Option Explicit 

Sub TestMe() 

    Debug.Print get_relative("U:\DB_DATA\HISTORY_LOG.xlsx") 
    Debug.Print get_relative("U:\DB_DATA\HISTORY_LOG.xlsx", 2) 

End Sub 


Public Function get_relative(str_path As String, Optional l_number As Long = 1) As String 

     Dim str_result  As String 
     Dim l_start   As Long 
     Dim l_counter  As Long 

     For l_counter = 1 To l_number 
      l_start = InStr(l_start + 1, str_path, "\") 
     Next l_counter 

     get_relative = Mid(str_path, InStr(l_start, str_path, "\")) 

End Function 
+0

Ich bin von diesem Code etwas verwirrt. Es ist möglich, dies auf 'Sub XFer() Dim wb als Arbeitsmappe, NR als lang Set wb = Workbooks.Open (" Quotes.xls ") NR = Sheets (" Sheet1 "). Bereich (" A ") & Rows.Count) .End (xlUp) .Row + 1 Mit ThisWorkbook.Sheets ("Result Sheet") wb.Sheets ("Sheet1"). Bereich ("A" & NR) .Wert = .Range (" B4 "). Wert Ende mit wb.Close saveganges: = True End Sub' – Nataniell

0

Wenn Sie Activeworkbook.FullName es gebe Ihnen den vollständigen Pfad der aktuell aktiven Datei .. aber würden Sie nicht wissen, ob Sie es dort sowieso sind zu retten?

+0

Ich möchte dies verwenden, um einige Daten in verschiedenen Arbeitsmappen zu speichern, aber diese Arbeitsmappen müssen verknüpft sein. Ich habe Codes zum Speichern von Daten gefunden, aber nicht mit relativen Pfaden. – Nataniell

+0

@Nataniell Ist es, weil Sie nicht wissen, welche Fahrt es ist? (zB. "U: \ DB_DATA \ HISTORY_LOG.xlsx" könnte "T: \ DB_DATA \ HISTORY_LOG.xlsx" auf dem PC eines anderen Benutzers sein?) Wenn ja, ist es besser, den Laufwerksnamen als den zugewiesenen Buchstaben zu verwenden (wie " Drive_NAME: \ DB_DATA \ HISTORY_LOG.xlsx ") – Jeremy

0

Es gibt zwei mögliche Lösungen hier:

i) Sie können eine Arbeitsmappe verwenden Sie den Pfad zu erzeugen und verändern

Dim Path As String 
Path = Application.Substitute(ThisWorkbook.FullName, ThisWorkbook.Name, "") 
Path = Path & "Subfolder A\" 

ii) die se Voraussetzung ist, dass Sie '.' verwenden können. Notation ('.' = dieser Ordner, '..' = übergeordneter Ordner)