Office: Code von 32-Bit auf 64-Bit umschreiben

Helfe beim Thema Code von 32-Bit auf 64-Bit umschreiben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Ich habe vor längerer Zeit von einem Bekannten eine Excel Datei bekommen, mit der ich Dateien und Orte bestimmter Laufwerke auflisten kann... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Jamesblond, 1. September 2018.

  1. Code von 32-Bit auf 64-Bit umschreiben


    Hallo

    Ich habe vor längerer Zeit von einem Bekannten eine Excel Datei bekommen, mit der ich Dateien und Orte bestimmter Laufwerke auflisten kann

    Jedoch liefe diese datei nur unter 32bit.
    Da ich jetzt aber ein 64-Bit System mit mit 64-Bit Office müsste man einen Teil des Codes umschreiben. Ich weiß aber nicht, wie ich anfangen muss.

    ---------
    Public Type BROWSEINFO '
    hOwner As Long '
    pidlRoot As Long '
    pszDisplayName As String '
    lpszTitle As String '
    ulFlags As Long '
    lpfn As Long '
    lParam As Long '
    iImage As Long '
    End Type '
    Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
    Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
    '############################################################################### #############


    Private z!

    Sub Dateisuche(Laufwerk, Dateien)
    Dim tmp, Wdhlg, Dateiname As String
    On Error Resume Next
    If Right(Laufwerk, 1) "" Then Laufwerk = Laufwerk + ""
    tmp = Dir(Laufwerk & Dateien)
    Do While Len(tmp)
    Dateiname = Laufwerk & tmp
    Application.StatusBar = Dateiname
    'Die folgenden Angaben können auch in eine Feldvariable
    'oder in eine Listbox eingelesen werden:
    Cells(z, 1).Select
    Cells(z, 1) = Laufwerk & tmp 'Pfad
    Cells(z, 2) = FileLen(Laufwerk & tmp) 'Größe
    Cells(z, 3) = FileDateTime(Laufwerk & tmp) 'Datum/Zeit
    Cells(z, 4) = tmp 'nur Dateiname
    z = z + 1
    tmp = Dir()
    Loop
    tmp = Dir(Laufwerk, vbDirectory)
    Do While Len(tmp)
    If (tmp ".") And (tmp "..") Then
    If (GetAttr(Laufwerk & tmp) And vbDirectory) = vbDirectory Then
    Dateisuche Laufwerk & tmp, Dateien
    z = z - 1
    Wdhlg = Dir(Laufwerk, vbDirectory)
    z = z + 1
    Do While Wdhlg tmp
    Wdhlg = Dir()
    Loop
    End If
    End If
    tmp = Dir()
    Loop
    On Error GoTo 0
    Application.StatusBar = False
    End Sub


    'Aufruf mit dem folgenden Makro
    Sub Suchen()
    Dim Laufwerk$, Dateien$
    'Erste Zeile, in der eine Eintragung erfolgt
    z = 2
    'Alte Eintragungen löschen
    [a2:e50000] = ""
    'Den Variablen Laufwerk und Dateien kann auch ein Wert direkt zugewiesen werden.
    Laufwerk = GetDirectory("Bitte einen Ordner wählen") 'Ersatz: ... = C:Eigene Dateien"
    If Laufwerk = "" Then Exit Sub
    'Ersatz: Dateien = "*.*"
    Dateien = InputBox("Nach welchen Dateien soll in" & Chr(10) & " " & Laufwerk & Chr(10) & "gesucht werden (z. B. *.xls)?", "Dateityp", "*.*")
    If Dateien = "" Then Exit Sub
    Dateisuche Laufwerk, Dateien
    End Sub



    'Ruft das Dialogfeld zur Ordnerauswahl auf
    Function GetDirectory(Msg) As String
    Dim bInfo As BROWSEINFO
    Dim path As String
    Dim r As Long, x As Long, pos As Integer
    With bInfo
    .pidlRoot = 0&
    .lpszTitle = Msg
    .ulFlags = &H1
    End With
    x = SHBrowseForFolder(bInfo)
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
    pos = InStr(path, Chr$(0))
    GetDirectory = Left(path, pos - 1)
    Else
    GetDirectory = ""
    End If
    End Function

    Vielleicht kann mir jemand helfen.

    :)
     
    Jamesblond, 1. September 2018
    #1
  2. Moin!
    Teste mal
    Declare PtrSafe Function

    Gruß Ralf
     
  3. Danke für deinen Tip.
    Aber ich muss gestehen, dass ich eigentlich von VBA keine Ahnung habe.
     
    Jamesblond, 2. September 2018
    #3
  4. Code von 32-Bit auf 64-Bit umschreiben

    Hallo zusammen,

    der Tip von Ralf alleine sollte so nicht ganz reichen. *wink.gif*

    Unter 64 Bit (wer braucht ein 64 Bit Office ? *rolleyes.gif* ) sollte man SHGetPathFromIDList gar nicht mehr verwenden.

    Alternative siehe z.B. hier
    https://social.msdn.microsoft.com/Fo...forum=exceldev

    Mit der Zeile ruft du alle Ordner auf
    Debug.Print ShellGetFolder(BIF_BROWSEINCLUDEFILES, "Select a folder", BIF_BrowseFolder)
     
    Flotter Feger, 2. September 2018
    #4
  5. Wo muss ich den den Befehl

    Debug.Print ShellGetFolder(BIF_BROWSEINCLUDEFILES, "Select a folder", BIF_BrowseFolder)

    einfügen??

    Ich möchte ja, in jedem Tabellenblatt, die unterschiedlichen Ordner aussuchen, wo sich die jeweiligen Dateien befinden.

    Sorry, weil ich keine Ahnung hab.

    Und was soll Cargo-Kult-Fall bedeuten ???
     
    Jamesblond, 2. September 2018
    #6
  6. Frag den Bekannten, alles andere wird eine Endlos-Orgie. Du schreibst ja selber, Du hast keine Ahnung und willst, wenn ich das richtig sehe, im Grunde nur, dass das eine Makro wieder läuft.
     
  7. Code von 32-Bit auf 64-Bit umschreiben

    Hallo,

    ganz verrückte Idee von mir ...

    Schmeiss das 64 Bit Office von der Platte und installiere die 32 Bit Version ... die läuft genauso auf deinem Windows und ich kenne keine Vorteile eines 64 Bit Office gegenüber der 32 Bit Variante.
    Oder arbeitest du mit riesigen Dateien und DataSets ?
    https://support.office.com/de-de/art...e-6c6f49b8d261
     
    Flotter Feger, 3. September 2018
    #8
Thema:

Code von 32-Bit auf 64-Bit umschreiben

Die Seite wird geladen...
  1. Code von 32-Bit auf 64-Bit umschreiben - Similar Threads - Code Bit Bit

  2. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  3. Code wird nicht komplett ausgeführt

    in Microsoft Excel Hilfe
    Code wird nicht komplett ausgeführt: Guten Morgen in die Runde! Situation: Dieser Code wird nicht komplett ausgeführt. es wird der Teil mit der Du Until Schleife übersprungen. Wenn ich aber mit Einzelschritte durch den Code gehe...
  4. Fehler im code bei Umstieg auf Excel 64 bit

    in Microsoft Excel Hilfe
    Fehler im code bei Umstieg auf Excel 64 bit: Hallo Forengemeinschaft. Mit dem unten stehenden Code konnte ich - in Excel 2013 32 Bit - das Verschieben von Userformen verhindern und das Kreuz ausblenden. (Code hat Nepumuk mal ins Netz...
  5. Code von 32-Bit auf 64-Bit umschreiben

    in Microsoft Excel Hilfe
    Code von 32-Bit auf 64-Bit umschreiben: Hallo Ich habe vor längerer Zeit einen Code aus dem Internet gefunden, mit dem ich in einer neuen Aplication eine Arbeitsmappe öffnen kann. Jetzt stelle ich fest, dass dieser Code auf ein System...
  6. Umstellung auf Windows 64 bit, Code-Anpassung

    in Microsoft Access Hilfe
    Umstellung auf Windows 64 bit, Code-Anpassung: Hallo, ich habe eine alte Datenbank übernommen, in der folgender Code enthalten ist. Jetzt soll auf Win 64 bit umgestellt werden, leider habe ich kaum Ahnung davon, welche Anpassungen nötig sind....
  7. Office 365 64 Bit-Version, VBA-Code funktioniert nicht mehr

    in Microsoft Access Hilfe
    Office 365 64 Bit-Version, VBA-Code funktioniert nicht mehr: Hallo Gemeinde Ich habe eine alte Datenbank, erstellt unter Access 2000, konvertiert nach Access 2007. Eine Kundin hat nun auf ihrem PC Office 365 in der 64 Bit-Version installiert. Nun...
  8. Code für 64 Bit System aktualisieren

    in Microsoft Access Hilfe
    Code für 64 Bit System aktualisieren: Ich habe heute meine Datenbank aufgerufen und bekomme folgende Meldung: Sie haben als Einstellung der Ereigniseingeschaft Ausdruck beim Laden eingegeben. Dieser Ausdruck hat einen Fehler...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden