Condividi tramite

Cerca.vert su file chiuso con VBA

Anonimo
2015-06-30T18:47:16+00:00

Buona sera a tutti.

È la prima volta che scrivo su questa Community e sono un appassionato di Excel/VBA 

Desidererei sapere se è possibile con del codice VBA eseguire un cerca.vert su un file chiuso.

In sostanza con l'istruzione Application.WorksheetFunction.VLookup(dato, matrice, n, false) come si deve fare (se possibile) memorizzare nella variabile di tipo Range matrice un intervallo di un file chiuso residente su HD.

Con il file aperto la cosa è tranquillamente possibile ma con uno chiuso, per quanti sforzi abbia fatto, non ci sono riuscito.

Vi ringrazio

Alfredo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Eliminata

    Questa risposta è stata eliminata a causa di una violazione del codice di comportamento. La risposta è stata segnalata manualmente o identificata tramite il rilevamento automatizzato prima dell'esecuzione dell'azione. Per ulteriori informazioni, fai riferimento al codice di comportamento.


    I commenti sono stati disattivati. Ulteriori informazioni

  2. Anonimo
    2015-07-02T12:19:55+00:00

    Grazie Maurizio per la tua conferma.

    Non credo che arriveranno comunicazioni contrarie; ci ho "sbattuto" la testa per diverso tempo senza cavare un ragno dal buco.

    Però è strano che i programmatori di Excel di Microsoft non abbiano previsto questa possibilità; non sono un esperto ma non penso che sarebbe stato eccessivamente complicato realizzare tale opportunità visto che con il file aperto è possibile farlo.

    Grazie di nuovo.

    Alfredo

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-07-02T07:30:06+00:00

    Ciao Alfredo,

    per quel che so io, no, non è possibile. Attendiamo eventuali comunicazioni contrarie.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-07-01T18:32:01+00:00

    Buona serata Maurizio ed innanzitutto grazie della risposta e dell'attenzione.

    Quindi mi confermi che non è possibile in VBA (come sospettavo) utilizzare la classica:

    Application.WorkSheetFunction (quale che sia la funzione) per recuperare un dato da file chiuso?

    Grazie

    Alfredo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-06-30T19:59:07+00:00

    Ciao alfrimpa,

    prova così:

    Public Sub a()

    Dim wsh     As Excel.Worksheet

    Dim wshTmp  As Excel.Worksheet

    Dim rngTmp  As Excel.Range

    Dim strValore         As String

    Dim strMatriceTabella As String

    Dim strIndice         As String

    Dim strIntervallo     As String

    Dim strFormula        As String

    Dim vntRet            As Variant

          With Application.ThisWorkbook.Worksheets

            Set wsh = .Item("Foglio1")

            Set wshTmp = .Add

          End With

          Set rngTmp = wshTmp.Range("A1")

          strValore = wsh.Range("B5").Address(0, 0, External:=True)

          strMatriceTabella = "'D:\Percorso[Dati.xlsx]Foglio1'!B5:C11"

          strIndice = "2"

          strIntervallo = "0"

          strFormula = "=VLOOKUP(" & strValore & "," & _

                                     strMatriceTabella & "," & _

                                     strIndice & "," & _

                                     strIntervallo & ")"

          rngTmp.Formula = strFormula

          vntRet = rngTmp.Value

          With Application

            .DisplayAlerts = False

            wshTmp.Delete

            .DisplayAlerts = True

          End With

          MsgBox strFormula & vbNewLine & vntRet

          Set rngTmp = Nothing

          Set wshTmp = Nothing

          Set wsh = Nothing

    End Sub

    EDIT:

    Sostituisci:

          MsgBox strFormula & vbNewLine & vntRet

    con:

          If IsError(vntRet) Then

            MsgBox strFormula & vbNewLine & "#N/D"

          Else

            MsgBox strFormula & vbNewLine & vntRet

          End If

    La risposta è stata utile?

    0 commenti Nessun commento