Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Const strPath durch Makro ändern

Const strPath durch Makro ändern
DirkR
Hallo Excelgemeinde,
ich komme einfach nicht weiter und benötge eure Hilfe.
Folgendes Problem:
In "Diese Arbeitsmappe" habe ich einen Pfad eingegeben:
Const strPath As String = "C:\Dokumente und Einstellungen\Räder\Eigene Dateien"
Über das folgende Makro möchte ich aber den Eintrag in VB ändern können:

Sub ordnerauswahl()
Dim BrowseDir As Object
On Error Resume Next
Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, "Ordner auswählen", & _
H4000, 17)
If Not BrowseDir Is Nothing Then
MsgBox BrowseDir.self.Path
End If
Set BrowseDir = Nothing
End Sub

Ich möchte, dass wenn ich über "ornderauswahl" einen neuen Pfad auswähle, dass dieser dann in VB gespeichert wird, Damit beim nächsten öffnen der neue Pfad zur Verfügung steht.
Gruß DirkR
AW: Const strPath durch Makro ändern
05.12.2010 19:47:00
Josef

Hallo Dirk,
wie der Name schon sagt, sind Konstanten konstant, du kannst eine Konstante nicht per Code ändern.
Du müsstest den Pfad entweder in eine Zelle schreiben, in einem definierten Namen oder einer benutzerdefinierten Dateieigeschaft festhalten.

Gruß Sepp

AW: Const strPath durch Makro ändern
05.12.2010 19:53:23
DirkR
Hallo Sepp,
danke für die schnelle Antwort. Ich dachte man könnte vielleicht den Text selbst im VB Editor ändern.
Aber dann werde ich eine andere Lösung suchen. Ich möchte ungern den Pfad in eine Zelle schreiben.
Danke, Gruß DirkR
Anzeige
AW: Const strPath durch Makro ändern
05.12.2010 20:00:25
Josef

Hallo Dirk,
"Ich dachte man könnte vielleicht den Text selbst im VB Editor ändern"
das kann man schon, ist aber eine ganz miese Art zu programmieren.

Gruß Sepp

AW: Const strPath durch Makro ändern
05.12.2010 20:06:41
DirkR
O.K.
Du schreibst:"Du müsstest den Pfad entweder in eine Zelle schreiben, in einem definierten Namen oder einer benutzerdefinierten Dateieigeschaft festhalten."
Hast du ein Beipiel für einen definierten Namen oder eien Dateieigenschaft? Was würde sich dafür eignen?
Gruß Dirk
Anzeige
AW: Const strPath durch Makro ändern
05.12.2010 20:17:35
Josef

Hallo Dirk,
das geht z.B. so.

' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
  strPath = GetCustProp(cstrPropertyName, cstrDefaultPath)
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

'Name der Dateieigenschaft
Public Const cstrPropertyName As String = "Mein Pfad"
'Vorgabewert für den Pfad, falls noch keine dateieigneschaft angelegt
Public Const cstrDefaultPath As String = "C:\Dokumente und Einstellungen\Räder\Eigene Dateien"

Public strPath As String

Sub ordnerauswahl()
  Dim BrowseDir As Object
  On Error Resume Next
  Set BrowseDir = CreateObject("Shell.Application").BrowseForFolder(0, _
    "Ordner auswählen", &H4000, GetCustProp(cstrPropertyName, cstrDefaultPath))
  
  If Not BrowseDir Is Nothing Then
    SetCustProp cstrPropertyName, BrowseDir.self.Path
  End If
  
  Set BrowseDir = Nothing
End Sub


Sub test()
  MsgBox GetCustProp(cstrPropertyName, cstrDefaultPath)
End Sub


Public Function GetCustProp(propName As String, Optional propValue As Variant) As Variant
  ' Wert aus Dateieigenschaft auslesen. Wenn nicht vorhanden
  ' Anlegen und Optional mit Startwert belegen
  
  Dim propType As MsoDocProperties
  
  If Not IsMissing(propValue) Then
    Select Case VarType(propValue)
      Case vbString
        propType = msoPropertyTypeString
      Case vbBoolean
        propType = msoPropertyTypeBoolean
      Case vbByte, vbInteger, vbLong
        propType = msoPropertyTypeNumber
      Case vbSingle, vbDouble
        propType = msoPropertyTypeFloat
      Case vbDate
        propType = msoPropertyTypeDate
      Case Else
    End Select
  End If
  
  With ThisWorkbook
    On Error GoTo NoName
    GetCustProp = .CustomDocumentProperties(propName).Value
    Exit Function
    NoName:
    If Err.Number = 5 Then
      Err.Clear
      .CustomDocumentProperties.Add _
        Name:=propName, _
        LinkToContent:=False, _
        Type:=propType, _
        Value:=propValue
      GetCustProp = propValue
    End If
  End With
End Function

Public Function SetCustProp(propName As String, propValue As Variant)
  ' Wert in Dateieigenschaft schreiben. Wenn nicht vorhanden
  ' Anlegen und Wert eintragen
  
  Dim propType As MsoDocProperties
  
  Select Case VarType(propValue)
    Case vbString
      propType = msoPropertyTypeString
    Case vbBoolean
      propType = msoPropertyTypeBoolean
    Case vbByte, vbInteger, vbLong
      propType = msoPropertyTypeNumber
    Case vbSingle, vbDouble
      propType = msoPropertyTypeFloat
    Case vbDate
      propType = msoPropertyTypeDate
    Case Else
  End Select
  
  With ThisWorkbook
    On Error GoTo NoName
    .CustomDocumentProperties(propName).Value = propValue
    Exit Function
    NoName:
    If Err.Number = 5 Then
      Err.Clear
      .CustomDocumentProperties.Add _
        Name:=propName, _
        LinkToContent:=False, _
        Type:=propType, _
        Value:=propValue
    End If
  End With
End Function

Gruß Sepp

Anzeige
AW: Const strPath durch Makro ändern
05.12.2010 20:41:28
DirkR
Hallo Sepp,
erst einmal vielen Dank für deine Mühe. Ich habe den Code gerade eingebaut und bin am testen. Ich habe bei "ordnerauswahl" beim Testen das Laufwerk: H:\ angegeben. Wenn ich nun erneut die ordnerauswahl aufrufe komme ich in der Ordnerstruktur nicht wieder zurück. Die Ornderauswahl beginnt dann immer wieder bei dem Laufwerk H:\.
Wie schaffe ich es, dass ich wieder zurück in der Ordnerstrucktur einen anderen Ordner auswählen kann?
Gruß Dirk
AW: Const strPath durch Makro ändern
05.12.2010 21:09:24
Josef

Hallo Dirk,
das ist eine Schwäche bei der Shell-Variante der Ordnerauswahl.
Ersetze die Prozedur "ordnerauswahl" durch folgende.

Sub ordnerauswahl()
  Dim strDir As String
  
  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = GetCustProp(cstrPropertyName, cstrDefaultPath)
    .AllowMultiSelect = False
    .ButtonName = "Ordner Auswählen"
    .Title = "Ordner wählen"
    .InitialView = msoFileDialogViewList
    .Show
    If .SelectedItems.Count > 0 Then strDir = .SelectedItems(1)
  End With
  
  If Len(strDir) Then SetCustProp cstrPropertyName, strDir
End Sub

Gruß Sepp

Anzeige
AW: Const strPath durch Makro ändern
05.12.2010 21:24:07
DirkR
Super,
vielen Dank für deine Mühe. Sieht gut aus, werde morgen weiter testen (muss ins Bett)
Gruß DirkR
AW: Const strPath durch Makro ändern
06.12.2010 13:09:51
DirkR
Hallo Sepp,
ich habe alles getestet. Funktioniert super!!!!!!
Vielen Dank!
Gruß DirkR

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige