Προς το περιεχόμενο

Ερώτηση πάνω σε Excel και DDE (=Dynamic Data Exchange)


godlike

Προτεινόμενες αναρτήσεις

Δημοσ.

Υπάρχει μία εφαρμογή η οποία δημιουργεί ένα αρχείο xls. Αυτό το αρχείο συνδέεται με την εφαρμογή ή με κάποιον server και ενημερώνει τα πεδία του δυναμικά. Δηλ. όταν ανοίγεις το αρχείο το βλέπεις να αλλάζει τιμές στα πεδία συνέχεια. Από ότι ρώτησα αυτή η τεχνολογία λέγετε DDE.

 

Όταν πας να σώσεις το αρχείο αυτό ναι μεν σώζετε αλλά όταν το ανοίγεις σε έναν άσχετο υπολογιστή δεν μπορείς να δεις τα πεδία και ζητάει ενημέρωση.

 

Ξέρετε κάποιον τρόπο να παίρνεις τα δεδομένα από το αρχείο που είναι συνδεδεμένο με την εφαρμογή;;

Δημοσ.
Αντιγραφή και ειδική επικόλληση σε νέο φύλλο -> ως τιμές[/b'] (δηλαδή να μην πάρει τους τύπους).

 

Ναι σαι καλά. Μήπως ξέρεις και κανέναν τρόπο για να γίνει αυτό "εξωτερικά";; Δηλ. να το σώζεις με την βοήθεια ενός εξωτερικού προγράμματος (το οποίος θα φτιάξω εγώ)

Δημοσ.

Αυτοματοποιείται εύκολα, στέλνοντας hotkeys κτλ:

Ctrl+A = επιλογή όλων

->run excel

Alt+E = edit menu

paste, save κτλ κτλ

 

Οπότε ένα πρόγραμμα αυτοματοποίησης όπως το http://www.autohotkey.com/ θα σου κάνει τη δουλειά.

 

Αν δεν τα καταφέρεις, υπάρχουν κι άλλοι τρόποι.

Δημοσ.
θελεις απαραιτητα να ειναι σε excel το αρχειο μετα?

 

αν θες μπορεις ευκολα να κανεις επικοληση σε ενα txt....

Θέλω να γίνεται χωρίς την μεσολάβηση χρήστη. Δηλ. ένα προγραμματάκι που θα ρουφάει data απο τα κελιά τα οποία όπως ανέφερα γίνονται update αυτόματα απο αυτήν την σπαστική DDE τεχνολογία.

  • 2 εβδομάδες αργότερα...
Δημοσ.

Χμμ, η DDE θεωρείται ήδη απαρχαιωμένη και η ίδια η Microsoft αποθαρρύνει τους χρήστες να την χρησιμοποιούν. Τώρα (εδώ και κάτι χρόνια) υπάρχει η VBA πλέον που τα κάνει όλα. Μπορείς με script να γράψεις το εξής (αλλάζεις το filein και to fileout απλά και το σώζεις σε ένα αρχείο με επέκταση vbs (vbscript) -το αρχείο μπορεί να είναι και εκτελέσιμο φυσικά, αλλά είναι λίγο δύσκολο να κάνω post κάποιο executable στις μέρες μας):

 

option explicit

dim app,wb,wsh,wb2,wsh2,filein,fileout

 

FileIn = "C:\test.xls"

FileOut = "c:\test2.xls"

 

Set app = CreateObject("Excel.Application")

app.ScreenUpdating = False

app.displayalerts=false

 

Set wb = app.Workbooks.Open(FileIn)

Set wsh = wb.Worksheets(1)

wsh.Range("A1:IV65536").Copy

 

Set wb2 = app.Workbooks.Add

Set wsh2 = wb2.Worksheets.Add

wsh2.Range("A1:IV65536").PasteSpecial -4163 'xlPasteValues

wb2.SaveAs FileOut

wb2.Close True

 

wb.Close

app.displayalerts=true

app.ScreenUpdating = True

app.Quit

Set app = Nothing

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...