Forum

Forum (https://www.ms-office.gr/forum/)
-   Excel - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/)
-   -   [Excel07] Αυτόματη αντικατάσταση εντός φύλλου (https://www.ms-office.gr/forum/excel-erotiseis-apantiseis/2745-aytomati-antikatastasi-entos-filloy.html)

sotisanis 16-10-13 08:21

Αυτόματη αντικατάσταση εντός φύλλου
 
καλησπερα και παλι παιδια. Θελω παλι τα φωτα σας.

Εχω ενα αρχειο με δεδομενα απο το A1- E44.
Απο A1- E1 ειναι επικεφαλιδες. και θελω να κανω το εξης.
Θελω να ανανεωνονται τα δεδομενα (λογικα απο το εισαγωγη εξωτερικων δεδομενων) απο καποιο αλλο αρχειο excel αλλα να γινεται αντικατασταση των δεδομενων ακομα και αν δεν ειναι μεχρι το E44 πχ μπορει να ειναι απο το Α1-Ε100. δεν βρηκα κατι αντιστοιχο ρε παιδια.

Τα φωτα σας ρε παιδια!!!

Tasos 16-10-13 12:00

1 Συνημμένο(α)
Καλημέρα Σωτήρη!

Υπάρχει ρύθμιση στις ιδιότητες εξωτερικών δεδομένων (βλ. εικόνα)

Συνημμένο Αρχείο 4935

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

Ευχαριστώ

Με εκτίμηση

Τάσος

sotisanis 16-10-13 13:09

με vba ομως Τασο πως θα το κανω?

sotisanis 16-10-13 19:29

Δεν μπορεσα να το κανω ετσι οπως μου ειπες ρε Τασο

sotisanis 16-10-13 20:27

Τασο βρηκα μια λυση ειναι αυτη

Κώδικας:

Sub Macro1()
Application.ScreenUpdating = False
Sheets("neo").Cells.Copy
Sheets("prod").Cells(1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Που στην ουσια μου κανει το εξης: κανει αντιγραφη του φυλλου neo στο prod αλλα θελω να το κανω να περνει απο αλλο βιβλιο και αυτο το βιβλιο να ειναι σε καποια σελιδα στο internet.

Καμοια βοηθεια???


Κατι αναμεσα στον κωδικα που σου εδωσα και σε αυτο το topichttp://www.ms-office.gr/forum/excel-...html#post11458

Tasos 16-10-13 21:38

1 Συνημμένο(α)
Θα πρέπει αρχικά να κατεβάσεις το βιβλίο προγραμματιστικά σε μια συγκεκριμένη θέση στο περιβάλλον του υπολογιστή σου.

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

Επισυνάπτω ένα παράδειγμα σε μορφή *.zip

Ο φάκελος "MyData" που περιέχεται στο zip καθώς και το περιεχόμενο του πρέπει να μετακινηθούν στο C:\ για να λειτουργήσει το παράδειγμα

Το αρχείο "MyWorkbook.xlsm" που περιέχεται στο zip μπορεί να τοποθετηθεί οπουδήποτε στο δίσκο.
Το "MyWorkbook.xlsm" έχει ήδη συνδεθεί με το αρχείο xlData.xlsx στο φάκελο "MyData"

Έχω ανεβάσει το αρχείο (xlData.xlsx) στον Server ms-office.gr.

Το αρχείο αυτό μεταφορτώνεται αυτόματα στο φάκελο "MyData" (διαγράφει το παλιό) πατώντας το κουμπί στο αρχείο "MyWorkbook.xlsm".

Κατόπιν γίνεται αυτόματα η ανανέωση δεδομένων του συνδεδεμένου πίνακα.

Ελπίζω ότι κάτι από όλα αυτά θα σου χρησιμεύσει.

Φιλικά

Τάσος

sotisanis 16-10-13 21:52

ΔΕΝ ΤΟ ΖΩ. επειδη εχω 64bit μου βγαζει προβλημα.τι να κανω???

sotisanis 16-10-13 22:16

το προβλημα το ελυσα αλλα παλι δεν κανει ανανεωση(δεν αλλαζουν τα δεδομενα) για να δουλεψει εβαλα Declare PtrSafe

Εγω αυτο που προσπαθω να κανω ειναι το εξης: εχουμε τα δεδομενα σε καποιον server πχ(xlData.xlsx) και το MyWorkbook.xlsm στον υπολογιστη μας.
αλλαζουμε τα δεδομενα απο το server και πατωντας ανανεωση (μεσα στο excel MyWorkbook.xlsm) να αλλαζουν τα δεδομενα απο το MyWorkbook.xlsm

δηλαδη να κανει ληψη των ενημερωσεων απο το internet

δηλαδη η αλλαγη που χρειαζεται στον κωδικα που εκανες ειναι να κανει save το ενημερωμενο excel ως MyWorkbook.xlsm η οπως αλλιως λεγεται.

(για να καταλαβω τι εκανες εβαλα στο δικο μου site ενα excel με καποια στοιχεια
www.taski.gr/url.xlsx)

Tasos 17-10-13 09:17

Το αρχείο που σου έστειλα κάνει αυτήν ακριβώς τη δουλειά.

Κάνει λήψη του αρχείου από το Internet, το αποθηκεύει στο φάκελο "MyData" (αντικαθιστά το παλιό) και ενημερώνει τον πίνακα στο "Φύλλο1" που είναι συνδεδεμένος με το αρχείο αυτό.

Αν αντιμετωπίζεις πρόβλημα ανανέωσης, αυτό οφείλεται στις ρυθμίσεις Internet του υπολογιστή σου.

Σ αυτή την περίπτωση μπορείς να αντικαταστήσεις τον κώδικα του παραδείγματος μου με τον παρακάτω (32 - 64 bit):

Κώδικας:

Option Explicit

#If VBA7 Then
    #If Win64 Then
        Private Declare PtrSafe Function DownloadXLToFile  Lib "urlmon" _
                Alias "URLDownloadToFileA" ( _
                ByRef pCaller As LongPtr, _
                ByVal szURL As String, _
                ByVal szFileName As String, _
                ByVal dwReserve As Long, _
                ByRef lpfnCB As LongPtr) _
                As LongPtr

        Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet" _
                Alias "DeleteUrlCacheEntryA" _
                (ByVal lpszUrlName As String) As Long


    #Else
        Private Declare Function DownloadXLToFile Lib "urlmon" _
                                                  Alias "URLDownloadToFileA" ( _
                                                  ByVal pCaller As Long, _
                                                  ByVal szURL As String, ByVal szFileName As String, _
                                                  ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
        Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
                                                    Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
    #End If
   
#Else
    Private Declare Function DownloadXLToFile Lib "urlmon" _
                                              Alias "URLDownloadToFileA" ( _
                                              ByVal pCaller As Long, _
                                              ByVal szURL As String, ByVal szFileName As String, _
                                              ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
                                                Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
#End If

Sub RefreshData()
    Dim XLTempName As String
    Dim XLPath As String
    Dim XLLocalName As String
    Dim XLRemoteName As String
    Dim ret As Long
    Dim fso As New Scripting.FileSystemObject

    XLTempName = Environ("TEMP") & "\x.xlsx"
    XLPath = "C:\MyData"
    XLLocalName = XLPath & "\xlData.xlsx"
    XLRemoteName = "http://www.ms-office.gr/xl/xlData.xlsx"
    If Not fso.FolderExists(XLPath) Then fso.CreateFolder XLPath
    DeleteUrlCacheEntry XLRemoteName
    ret = DownloadXLToFile(0, XLRemoteName, XLTempName, 0&, 0&)
    If ret <> 0 Then
        MsgBox "Σφάλμα κατά τη μεταφόρτωση!, vbExclamation"
        Exit Sub
    End If
    If fso.FileExists(XLLocalName) Then
        On Error Resume Next
        fso.DeleteFile XLLocalName
        If Err <> 0 Then
            MsgBox "Σφάλμα: " & Err & vbLf & Err.Description, vbExclamation
            Exit Sub
        End If
    End If
    fso.MoveFile XLTempName, XLLocalName
    Range("A1").ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub


Φρόντισε να εγκαταστήσεις έκδοση 32 bit για να γλυτώσεις από πολλά προβλήματα.

Τάσος

sotisanis 17-10-13 16:18

1 Συνημμένο(α)
Δεν μου δουλευει Τασο

Εχω αυτο το excel και θελω να κανω το εξης: να ενημερωνω το φυλλο proionta οταν παταω το κουμπι ανανεωση και να κανει αποθηκευση οπως ακριβως ειναι πχ ΦΟΡΜΑ ΠΑΡΑΓΓΕΛΙΑΣ ειναι τωρα μετα μπορει να το εχει βαλει ο αλλος ΦΟΡΜΑ και να κανει απλη αποθηκευση εκει που ειναι
για ενημερωση θελω να τραβαει δεδομενα απο ενα φυλλο απο internet πχ το δικο σου που εχεις βαλει http://www.ms-office.gr/xl/xlData.xlsx

οταν προσθετω τον κωδικα μου βγαζει error. στα module το εβαλα σωστα?

Tasos 17-10-13 16:34

Αγαπητέ μου, λυπάμαι αλλά δεν ξέρω πως αλλιώς μπορώ να σε βοηθήσω.

Το "Δεν μου δουλεύει" δεν μου λέει απολύτως τίποτα.

Όταν σου δίνω ένα δοκιμασμένο λειτουργικό παράδειγμα που στο δικό σου περιβάλλον δεν δουλεύει
θα πρέπει εσύ να ψάξεις τι δεν κάνεις καλά.

Δεν μπορώ εγώ να γνωρίζω τι συμβαίνει στον υπολογιστή σου.

Θα δω το τελευταίο σου αρχείο και θα επανέλθω...

Τάσος

Tasos 17-10-13 17:06

1 Συνημμένο(α)
Θα πρέπει να συνδέσεις για μια και μοναδική φορά το φύλλο δεδομένων του αρχείου σου με το αρχείο C:\MyData\url.xlsx χειροκίνητα με τη μέθοδο εισαγωγής εξωτερικών δεδομένων για να λειτουργήσει.

Το παράδειγμα που επισυνάπτω χρησιμοποιεί το δικό σου αρχείο (url.xlsx ).

ΠΡΟΣΟΧΗ! Έγινε διόρθωση στο αρχείο. Παρακαλώ κατεβάστε το ξανά.

Καλή συνέχεια!

Τάσος

sotisanis 17-10-13 17:44

χτυπαει στο debug και δειχνει σε αυτο DownloadXLToFile

Tasos 17-10-13 18:22

Κάτι δεν κάνεις καλά.

Έλεγξε τις μεταβλητές και τα ονόματα των αρχείων απομακρυσμένων και τοπικών.

sotisanis 17-10-13 18:38

μηπως πρεπει να δηλωσω το DownloadXLToFile ως Dim DownloadXLToFile

Tasos 17-10-13 19:55

Μήπως δεν έβαλες τις συναρτήσεις:

Κώδικας:

#If VBA7 Then
    #If Win64 Then
        Private Declare PtrSafe Function DownloadXLToFile Lib "urlmon" _
                Alias "URLDownloadToFileA" ( _
                ByRef pCaller As LongPtr, _
                ByVal szURL As String, _
                ByVal szFileName As String, _
                ByVal dwReserve As Long, _
                ByRef lpfnCB As LongPtr) _
                As LongPtr

        Private Declare PtrSafe Function DeleteUrlCacheEntry Lib "wininet" _
                Alias "DeleteUrlCacheEntryA" _
                (ByVal lpszUrlName As String) As Long


    #Else
        Private Declare Function DownloadXLToFile Lib "urlmon" _
                                                  Alias "URLDownloadToFileA" ( _
                                                  ByVal pCaller As Long, _
                                                  ByVal szURL As String, ByVal szFileName As String, _
                                                  ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
        Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
                                                    Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
    #End If
   
#Else
    Private Declare Function DownloadXLToFile Lib "urlmon" _
                                              Alias "URLDownloadToFileA" ( _
                                              ByVal pCaller As Long, _
                                              ByVal szURL As String, ByVal szFileName As String, _
                                              ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
                                                Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
#End If

Το δικό μου παράδειγμα σου δουλεύει;

sotisanis 17-10-13 20:53

βαζω τωρα 32bit πραγματικα ειμαι ΠΟΛΥ ΧΑΖΟΣ!!! πηγα σε αλλο υπολογιστη με 32bit και δουλεψε μια χαρα.αλλα εχω μια απορεια ρε συ τασο.γιατι να υπαρχει και στον c my data? Αφου τραβαει δεδομενα απο internet και τα περναει αμεσως στην φορμα και οκ μετα.

Tasos 17-10-13 21:10

Δουλεύει και σε 64 bit. Επικόλλησε τις συναρτήσεις που παραθέτω στο προηγούμενο μου μήνυμα (έκανα μια διόρθωση στο όνομα της συνάρτησης DownloadXLToFile).

Το παραδειγματικό αρχείο δεν τραβάει δεδομένα από το Internet.

Δεν μπορεί ένας Linux να σου στείλει τα δεδομένα από ένα *.xlsm.

Απλά κατεβάζει το αρχείο στο φάκελο MyData κάθε φορά που πατάς το κουμπί για να κάνεις ανανέωση.

Τα δεδομένα που βλέπεις στο βιβλίο σου δεν πηγάζουν από το Internet αλλά από το αρχείο που έχει μεταφορτωθεί αυτόματα με κώδικα στο φάκελο MyData.

Τάσος

sotisanis 17-10-13 21:25

ναι αλλα αν δεν εχει ο αλλος τον φακελο my data στον υπολογιστη του?
επισης πως μπορω να το κανω για να παιρνει αμεσως απο το url?
με xml?

Tasos 17-10-13 22:14

Αν δεν υπάρχει ο φάκελος "MyData" τότε θα δημιουργηθεί αυτόματα.
Ενδέχεται ο χρήστης να μην έχει πρόσβαση στη διαδρομή C:\.

Σ΄ αυτή την περίπτωση φρόντισε να μετακινήσεις το φάκελο σε κάποια διαδρομή που θα είναι προσβάσιμη από τον χρήστη.

Θα πρέπει να αλλάξεις τα ονόματα των αρχείων καθώς και τη διαδρομή του φακέλου στον κώδικα.
Επίσης θα πρέπει να τροποποιήσεις τη σύνδεση του βιβλίου σου για να βρίσκει το αρχείο με τα δεδομένα αφού το μετακινήσεις.

Όσο για το XML, μπορείς να ανοίξεις νέο θέμα και να βάλεις εκεί την ερώτηση σου αφού πρώτα μελετήσεις το θέμα εδώ: Αντιστοίχιση και κατάργηση αντιστοίχισης στοιχείων XML - Excel - Office.com

Τάσος

sotisanis 17-10-13 22:21

να το μετατρεπω σε xml ξερω. αλλα απο κωδικα δεν ξερω τι να κανω για να το κανω με vba


Η ώρα είναι 08:28.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2