Καλημέρα σε όλους!
Αγαπητέ Αλέξανδρε, το ζητούμενο σου δεν μπορεί να επιτευχθεί με συναρτήσεις.
Σου επισυνάπτω ένα παράδειγμα με
VBA όπου μπορείς κάνοντας διπλό κλικ στο κελί A1
του φύλλου "Φύλλο1" στο βιβλίο excel1.xlsm
να παίρνεις την τιμή
του κελιού A1 του φύλλου "Φύλλο1" από το βιβλίο excel2.xlsm
και αντίστροφα.
Δεν χρειάζεται να είναι και τα 2 βιβλία ανοιχτά.
Η συνάρτηση που χρησιμοποιείται είναι:
Κώδικας:
Public Function SyncValue( _
ByVal remoteWorkbookPath As String, _
ByVal remoteWorkbookName As String, _
ByVal remoteWorksheetName As String, _
ByVal remoteCellReference As String) As Variant
SyncValue = ExecuteExcel4Macro("'" & _
remoteWorkbookPath & "\[" & _
remoteWorkbookName & "]" & _
remoteWorksheetName & "'!" & _
Range(remoteCellReference).Address(True, True, xlR1C1))
End Function
Η παραπάνω συνάρτηση
VBA είναι η ίδια και στα 2 βιβλία και βρίσκεται στο
ThisWorkbook (Αν πατήσεις ALT + F11 για να ανοίξει ο
VBE θα το δεις πάνω αριστερά)
Ο κώδικας που καλεί τη συνάρτηση αυτή είναι:
Κώδικας:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then ' Όταν γίνει διπλό κλικ στο κελί A1
Cancel = True ' Αποτρέπει την επεξεργασία του κελιού
Target = ThisWorkbook.SyncValue( _
remoteWorkbookPath:=ThisWorkbook.Path, _
remoteWorkbookName:="excel2.xlsm", _
remoteWorksheetName:="Φύλλο1", _
remoteCellReference:="A1")
End If
End Sub
Ο παραπάνω κώδικας βρίσκεται "Sheet1" στον
VBE και εκτελείται αυτόματα όταν κάνεις διπλό κλικ στο κελί A1 του συγκεκριμένου φύλλου.
Αν χρειαστεί να προσαρμόσεις τα ονόματα λάβε υπόψη σου τις παρακάτω επεξηγήσεις:
- remoteWorkbookPath = Η διαδρομή του φακέλου που βρίσκεται το απομακρυσμένο αρχείο Πχ. F:\Desktop
- remoteWorkbookName = Το όνομα του αρχείου + κατάληξη ονόματος πχ. excel2.xlsm
- remoteWorksheetName = Το όνομα του φύλλου εργασίας του απομακρυσμένου αρχείου πχ. Φύλλο1
- remoteCellReference = Η διεύθυνση του κελιού του απομακρυσμένου αρχείου πχ. A1
Καλή συνέχεια
Τάσος