Microsoft Excel

Herbers Excel/VBA-Archiv

Code auf 64bit aktualisieren


Betrifft: Code auf 64bit aktualisieren von: Marcus
Geschrieben am: 26.09.2019 11:46:18

Hallo zusammen,

habe einen neuen Firmen PC und dort kommt sobald ich eine alte Datei von mir öffne, ich soll den Code für das Projekt auf 64 BIT aktuallisieren. Bloß wie und wo.

der Code der rot hinterlegt ist (installiert ist jetzt Excel 2016):

Declare Function MakePath Lib "imagehlp.dll" _
Alias "MakeSureDirectoryPathExists" (ByVal _
lpPath As String) As Long

  

Betrifft: Such im Archiv nach "PtrSafe". (owT) von: EtoPHG
Geschrieben am: 26.09.2019 11:53:48




  

Betrifft: AW: Such im Archiv nach "PtrSafe". (owT) von: Marcus
Geschrieben am: 26.09.2019 12:32:33

@Etophg

wie und wo mache ich das?


  

Betrifft: Nach einem kurzen Blick... von: Case
Geschrieben am: 26.09.2019 12:38:52

Hallo, :-)

... ins Web: ;-)

Kompatibilität zwischen der 32-Bit- und der 64-Bit-Version von Office...

Servus
Case



  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 12:51:41

@CASE

ja das habe ich auch gefunden, nur weis ich nicht was ich an meinem Code ändern muss um ihn kompatibel zu machen? das Long auf LongPtr, des reicht wohl nicht.

muss ich die Zeile dort kpl. kopieren und meinen Code ersetzen?

Bitte um Hilfe für Dumme hihi

danke Marcus


  

Betrifft: AW: Nach einem kurzen Blick... von: Nepumuk
Geschrieben am: 26.09.2019 12:56:29

Hallo Marcus,

LongPtr brauchst du nur für Pointer die Funktion gibt aber nur 0 (fehlgeschlagen) oder 1 (erfolgreich) zurück. also:

Declare PtrSafe Function MakePath Lib "imagehlp.dll" _
    Alias "MakeSureDirectoryPathExists" (ByVal _
    lpPath As String) As Long

Gruß
Nepumuk


  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 13:15:21

besten Danke Nepumuk

jetzt habe ich die erste Zeile verstanden

nur mault er jetzt bei == if makepath(strwurzel usw.



der kpl. Code

Sub machHyperlinksNurEingeblendete()
    Dim lZeile As Long, lLetzteZeile As Long
    Dim strWurzel As String, strVerzeichnis As String

    'Wurzelverzeichnis festlegen
    strWurzel = ActiveWorkbook.Path & "\"  '"C:\Users\papa\Desktop\"

    'Verweis auf Tabellenblatt (evtl. anzupassen)
    With ActiveSheet

       'Letzte benutzte Zeile ermitteln
       lLetzteZeile = .Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row
       
       'Schleife über alle Zeilen (unabhängig, ob ausgeblendet, oder nicht)
       For lZeile = 7 To lLetzteZeile
       
          'Nur eingeblendete Zeilen
          If Not .Rows(lZeile).Hidden Then
             
             'Verzeichnis, das angelegt werden soll
             strVerzeichnis = CStr(.Cells(lZeile, 1).Value)
             
             'Pfad anlegen
             If MakePath(strWurzel & strVerzeichnis & "\") Then
               
                'Hyperlink anlegen
                ActiveSheet.Hyperlinks.Add Anchor:=.Cells(lZeile, 1), _
                                           Address:=strWurzel & strVerzeichnis, _
                                           ScreenTip:="Öffne " & strVerzeichnis, _
                                           TextToDisplay:=strVerzeichnis
             End If
          End If
       Next
       
    End With
    End Sub



  

Betrifft: AW: Nach einem kurzen Blick... von: Nepumuk
Geschrieben am: 26.09.2019 13:56:14

Hallo Marcus,

wie äußert sich das, Fehlermeldung, Programmabsturz … ???

Gruß
Nepumuk


  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 13:59:47

Hi nepumuk

er springt ins VBA und markiert den Wortlaut und führt das Makro nicht aus.

Ich finde nur keinen bezug von dem Makro zu der Umstellung auf 64 Bit?

Gruß
Marcus


  

Betrifft: AW: Nach einem kurzen Blick... von: Nepumuk
Geschrieben am: 26.09.2019 14:15:23

Hallo Marcus,

dazu kann ich nichts sagen, ich habe keine 64Bit - Version. Selbst Microsoft rät davon ab.

Gruß
Nepumuk


  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 14:52:51

wie kann ich Excel dazu zwingen das es im 32bit mode startet? geht das


  

Betrifft: AW: Nach einem kurzen Blick... von: Nepumuk
Geschrieben am: 26.09.2019 14:58:04

Hallo Marcus,

das geht nicht.

Gruß
Nepumuk


  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 15:02:25

habe ich irgendeine chance diesen Code zum laufen zu bekommen?

    Option Explicit

 Declare PtrSafe Function apiCreateFullPath Lib "imagehlp.dll" Alias _
  "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

    Sub machHyperlinksNurEingeblendete()
    Dim lZeile As Long, lLetzteZeile As Long
    Dim strWurzel As String, strVerzeichnis As String

    'Wurzelverzeichnis festlegen
    strWurzel = ActiveWorkbook.Path & "\"  '"C:\Users\papa\Desktop\"

    'Verweis auf Tabellenblatt (evtl. anzupassen)
    With ActiveSheet

       'Letzte benutzte Zeile ermitteln
       lLetzteZeile = .Range("A:A").Find("*", , , , xlByRows, xlPrevious).Row
       
       'Schleife über alle Zeilen (unabhängig, ob ausgeblendet, oder nicht)
       For lZeile = 7 To lLetzteZeile
       
          'Nur eingeblendete Zeilen
          If Not .Rows(lZeile).Hidden Then
             
             'Verzeichnis, das angelegt werden soll
             strVerzeichnis = CStr(.Cells(lZeile, 1).Value)
             
             'Pfad anlegen
             If MakePath(strWurzel & strVerzeichnis & "\") Then
               
                'Hyperlink anlegen
                ActiveSheet.Hyperlinks.Add Anchor:=.Cells(lZeile, 1), _
                                           Address:=strWurzel & strVerzeichnis, _
                                           ScreenTip:="Öffne " & strVerzeichnis, _
                                           TextToDisplay:=strVerzeichnis
             End If
          End If
       Next
       
    End With
    End Sub



jetzt mault er noch bei der Zeile if makepath usw. selbst wenn ich die durch MakeSureDirectoryPathExists ersetze:



kommt die Meldung fehler beim komilieren - sub oder function nicht definiert


  

Betrifft: AW: Nach einem kurzen Blick... von: Nepumuk
Geschrieben am: 26.09.2019 15:11:04

Hallo Markus,

teste mal:

Option Explicit

Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal lpPath As String) As Long

Sub machHyperlinksNurEingeblendete()
    Dim lZeile As Long, lLetzteZeile As Long
    Dim strWurzel As String, strVerzeichnis As String
    
    'Wurzelverzeichnis festlegen
    strWurzel = ActiveWorkbook.Path & "\" '"C:\Users\papa\Desktop\"
    
    'Verweis auf Tabellenblatt (evtl. anzupassen)
    With ActiveSheet
        
        'Letzte benutzte Zeile ermitteln
        lLetzteZeile = .Columns(1).Find("*", , , , xlByRows, xlPrevious).Row
        
        'Schleife über alle Zeilen (unabhängig, ob ausgeblendet, oder nicht)
        For lZeile = 7 To lLetzteZeile
            
            'Nur eingeblendete Zeilen
            If Not .Rows(lZeile).Hidden Then
                
                'Verzeichnis, das angelegt werden soll
                strVerzeichnis = CStr(.Cells(lZeile, 1).Value)
                
                'Pfad anlegen
                If MakeSureDirectoryPathExists(strWurzel & strVerzeichnis & "\") Then
                    
                    'Hyperlink anlegen
                    .Hyperlinks.Add Anchor:=.Cells(lZeile, 1), _
                        Address:=strWurzel & strVerzeichnis, _
                        ScreenTip:="Öffne " & strVerzeichnis, _
                        TextToDisplay:=strVerzeichnis
                End If
            End If
        Next
        
    End With
End Sub

Gruß
Nepumuk


  

Betrifft: AW: Nach einem kurzen Blick... von: Marcus
Geschrieben am: 26.09.2019 15:14:34

danke danke danke

wo wohnst du ich bring dir BIER danke Danke Danke


Beiträge aus dem Excel-Forum zum Thema "Code auf 64bit aktualisieren"