2012-04-13 15 views
1

Ich erstellte eine Makro-Taste, um meine täglichen Dateien von einem Excel-Produktionsblatt zu öffnen, wo ich alle meine Makro-Taste für bestimmte Dateien haben.Excel VBA-Code zum Öffnen einer Datei

Das Format für alle meine Dateien sind üblicherweise die gleiche:

  1. Businese Einheit Name: YMCA
  2. Jahr: 2012
  3. Monat: April
  4. Woche: Woche 2
  5. Tag: 12
  6. Dateiname: YMC Vorlage 041212.xlsm

Ich habe Probleme mit der letzten Excel-Dateinamenerweiterung. Wie füge ich das MyDaily Template und MyDateProd zusammen mit dem .xlsm hinzu. Ich habe diese -J: ..... \ & myDailyTemplate & myDateProd.xlsm ") unten für ganze Dateipfadnamen sehen

Sub Open_DailyProd() 

    Dim myFolderYear As String 
    Dim myFolderMonth As String 
    Dim myFolderWeek As String 
    Dim myFolderDaily As String 
    Dim myDateProd As String 
    Dim myBusinessUnit As String 
    Dim myDailyTemplate As String 

    myBusinessUnit = Sheet1.Cells(32, 2) 
    myFolderYear = Sheet1.Cells(11, 2) 
    myFolderMonth = Sheet1.Cells(12, 2) 
    myFolderWeek = Sheet1.Cells(13, 2) 
    myFolderDaily = Sheet1.Cells(14, 2) 
    myDateProd = Sheet1.Cells(15, 2) 
    myDailyTemplate = Sheet1.Cells(6, 5) 

    Application.Workbooks.Open ("J:\IAS\3CMC05HA01\IAC Clients\myBusinessUnit\myFolderYear\myFolderMonth\myFolderWeek\myFolderDaily\& myDailyTemplate & myDateProd.xlsm") 

End Sub 

Antwort

5

Excel wird für eine Datei suchen genannt. "J:\IAS\3CMC05HA01\IAC Clients\myBusinessUnit\myFolderYear\myFolderMonth\myFolderWeek\myFolderDaily\& myDailyTemplate & myDateProd.xlsm"

Da dies in den Anführungszeichen enthalten ist, scheinen Sie aus Ihrem Code eine Anzahl von Variablen zu haben, die Teil dieser Zeichenkette sind. Sie müssen sie aus den Anführungszeichen herausnehmen und miteinander verketten. Versuchen Sie etwa Folgendes:

"J:\IAS\3CMC05HA01\IAC Clients\" & myBusinessUnit & "\" & myFolderYear _ 
& "\" & myFolderMonth & "\" & myFolderWeek & "\" & myFolderDaily & _ 
"\" & myDailyTemplate & myDateProd & ".xlsm" 

Ich habe die Fortsetzung _ hinzugefügt, um es lesbarer auf dem Bildschirm hier zu machen, aber es ist nicht notwendig, Sie können alles auf eine Linie zusammen setzen, wenn Sie bevorzugen.

Sofern Sie nicht alle der myBusinessUnit benötigen, myFolderYear, etc Variablen an anderer Stelle, würde ich darüber nachdenken, es in irgendeiner Art von Array zu tun und dann eine Join Funktion tut alles verketten. Ich persönlich finde es einfacher, diese weiter zu pflegen und die Hierarchie in der Ordnerstruktur einfacher zu sehen, anstatt einen sehr langen String zu betrachten und herauszufinden, welcher Teil des Pfades falsch ist.

Sub Open_DailyProd() 

    Dim pathParts(1 To 10) As String 
    Dim path As String 

    pathParts(1) = "J:" 
    pathParts(2) = "IAS" 
    pathParts(3) = "3CMC05HA01" 
    pathParts(4) = "IAC Clients" 
    pathParts(5) = Sheet1.Cells(32, 2) 
    pathParts(6) = Sheet1.Cells(11, 2) 
    pathParts(7) = Sheet1.Cells(12, 2) 
    pathParts(8) = Sheet1.Cells(13, 2) 
    pathParts(9) = Sheet1.Cells(14, 2) 
    pathParts(10) = Sheet1.Cells(6, 5) & Sheet1.Cells(15, 2) & ".xlsm" 

    path = Join(pathParts, "\") 

    Application.Workbooks.Open (path) 

End Sub 
+0

Ich habe Issuw mit dem Pfad = Join (pathPart, "\"). – cemg

+0

@cemg ich hätte es mit "ungetestet" vorangestellt, wie ich es nicht versuchte, bevor ich es schrieb. Die Grundidee ist jedoch solide. Welchen Fehler bekommst du? – psubsee2003

+0

@cemg Ich hatte einen Tippfehler in meinem Code, aber behoben, und ich habe dieses Mal getestet. Es sollte für Sie arbeiten. Wenn dies nicht der Fall ist, müssen Sie berücksichtigen, dass entweder die gewünschte Datei an dieser Stelle nicht vorhanden ist oder der Pfad einen Tippfehler enthält. – psubsee2003

Verwandte Themen