Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Errore di compilazione dopo End Sub sono ammessi solo commenti

  1. #1
    emilio65 non è in linea Novello
    Post
    12
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti
    da un pulsante di ms access devo andare a leggere un file .ini
    in internet ci sono decine di esempi ma tutti dicono di usare questo codice iniziale

    qua ho trovato un esempio
    https://www.excelvba.it/forumexcel/r...one-ini-files/

    'managing INI files
    'from an idea of Scott Lyerly
    
    'read INI
    Public Declare Function GetPrivateProfileString Lib "kernel32" _
                     Alias "GetPrivateProfileStringA" _
                     (ByVal lpApplicationName As String, _
                       ByVal lpKeyName As String, _
                       ByVal lpDefault As String, _
                       ByVal lpReturnedString As String, _
                       ByVal nSize As Long, _
                       ByVal lpFileName As String) As Long
    
    'write INI
    Public Declare Function WritePrivateProfileString Lib "kernel32" _
                     Alias "WritePrivateProfileStringA" _
                     (ByVal lpApplicationName As String, _
                       ByVal lpKeyName As String, _
                       ByVal lpString As String, _
                       ByVal lpFileName As String) As Long
    
    e poi inizia il codice per leggere o scrivere

    qualunque codice io vada a mettere ho un errore sulla read INI che mi dice

    Errore di Compilazione
    Dopo End Sub , End Function o End Property sono ammessi solo commenti

    Non capisco dove sbaglio

    grazie
    Emilio
    Ultima modifica di AntonioG; 13-02-2021 00:51  Motivo: Tag CODE per il codice

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,803
    Like Inviati  
    0
    Like Ricevuti  
    23
    Pubblica tutto perché il problema non è nelle 2 Declare...
    In ogni caso, pur non sapendo che versione di office hai, sarebbe meglio usare il ptrsafe e, nel caso del 64bit... anche fare attenzione a quello.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    emilio65 non è in linea Novello
    Post
    12
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao
    Sto usando MS ACCESS 2007 e Windows 7 64 bit
    Non so cosa sia il ptrsave

    Il codice l'ho inserito nella sezione Moduli-> Funzione di VBA di access
    questo è il codice

    Option Explicit
    
    'managing INI files
    'from an idea of Scott Lyerly
    
    'read INI
    Public Declare Function GetPrivateProfileString Lib "kernel32" _
                     Alias "GetPrivateProfileStringA" _
                     (ByVal lpApplicationName As String, _
                       ByVal lpKeyName As String, _
                       ByVal lpDefault As String, _
                       ByVal lpReturnedString As String, _
                       ByVal nSize As Long, _
                       ByVal lpFileName As String) As Long
    
    'write INI
    Public Declare Function WritePrivateProfileString Lib "kernel32" _
                     Alias "WritePrivateProfileStringA" _
                     (ByVal lpApplicationName As String, _
                       ByVal lpKeyName As String, _
                       ByVal lpString As String, _
                       ByVal lpFileName As String) As Long
                       
    Function ini_manager(action As String, section As String, key As String, _
                         Optional value As String) As String
    
    ' in questa costante memorizziamo il percorso e il nome del file ini da leggere/scrivere
    Const INI_FILE As String = "C:\Temp\PJ.INI"
    
    Dim sRetBuf As String
    Dim iLenBuf As Integer
    Dim sReturnValue As String
    Dim lRetVal As Long
    
    On Error GoTo gest_err
    
        Select Case LCase(Left(action, 1))
        Case "r"            'READ INI
            ' alloca lo spazio necessario
            sRetBuf = Space(256)
            iLenBuf = Len(sRetBuf)
    
            ' recupera la sezione INI e la chiave cercata
            sReturnValue = GetPrivateProfileString(section, key, "", sRetBuf, _
                                                   iLenBuf, INI_FILE)
    
            ' pulisce il valore di ritorno
            sReturnValue = Trim(Left(sRetBuf, sReturnValue))
    
            ' restituisce il valore cercato oppure "Error"
            If Len(sReturnValue) > 0 Then
                ini_manager = sReturnValue
            Else
                ini_manager = "Error"
            End If
        
        Case "w"            'WRITE INI
            ' ritorna errore se non esiste la sezione che si tenta di scrivere
            If Len(value) = 0 Then
                ini_manager = "Error"
            Else
                ' scrive il valore specificato nella chiave della sezione indicata
                If ini_manager("r", section, key) <> "Error" Then
                    lRetVal = WritePrivateProfileString(section, key, value, _
                                                        INI_FILE)
    Else
                    lRetVal = 0
                End If
                ' controlla se la procedura restituisce un valore di errore
                If lRetVal = 0 Then ini_manager = "Error" Else ini_manager = "Ok"
            End If
            
        Case Else
            ' solo w e r sono ammesse. Altre codifiche restituiscono errore
            ini_manager = "Error"
            
        End Select
        
        Exit Function
        
    gest_err:
        MsgBox Err.Number & ": " & Err.Description, vbInformation, "INI Manager"
        
    End Function
    
    Ultima modifica di AntonioG; 13-02-2021 00:50  Motivo: Tag CODE per il codice

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,485
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Devi usare i tag CODE per il codice o non si capisce molto. Questa volta lo faccio io, attenzione la prossima volta.

    Per il problema che hai indicato, non sono riuscito a replicarlo, non ho il messaggio d'errore di cui parli.
    Ultima modifica di AntonioG; 13-02-2021 01:02 
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di willy55
    willy55 non è in linea Scribacchino
    Post
    730
    Like Inviati  
    0
    Like Ricevuti  
    0
    Per conoscere l'impiego di PtrSafe (al fine di ottenere la compatibilità fra versioni a 32 e 64 bit) leggi:
    https://docs.microsoft.com/en-us/off...trsafe-keyword
    https://docs.microsoft.com/it-it/pre...ting-vba-macro
    https://docs.microsoft.com/en-us/off...ions-of-office
    https://masterdrive.it/microsoft-acc...64-bit-100437/

    Se vuoi una compatibilità fra sistemi a 32 o 64 bit devi adattarne il codice e controllare che venga effettuata correttamente la compilazione.
    ℹ️ Leggi di più su willy55 ...

  6. #6
    emilio65 non è in linea Novello
    Post
    12
    Like Inviati  
    0
    Like Ricevuti  
    0
    Grazie
    Leggero la documentazione
    ciao

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Errore Object Unloaded dopo compilazione
    Da tizike nel forum Visual Basic 6
    Risposte: 10
    Ultimo Post: 15-01-2017, 23:52
  2. Duplicati non ammessi: inserire msg di errore.
    Da doppiavela nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 02-10-2012, 10:00
  3. [VS2010] Problemi dopo la compilazione
    Da dolcissimo nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 16-11-2011, 12:04
  4. Dove sono le cartelle dopo compilazione e pubblicazione?
    Da grandissimespillette nel forum Visual Basic .Net
    Risposte: 12
    Ultimo Post: 28-03-2011, 12:12