Премини към съдържанието
nelly_p

При промяна на данни в област от клетки на ексел тя да се изпрати до уеб сайт

    Препоръчан отговор


    Здравейте Задачката ми е да направя макрос в ексел, който при промяна на данни/ смяна на стойност, изтриване на ред, вмъкване на ред/ в дадена област от клетки да се изпрати промяната/ новата стойност и адреса на клетката или реда/ до уеб сайт. Моля ако имате идея и/ или инфомация да я споделите. Благодеря предварително. Аз самата съм направила следния макрос, който обаче неработи ако се кътне или вмъкне ред и незнам как да изпратя информацията до сайт, знам по мейл, но до сайт не. Кода ми е: Private Sub Worksheet_Change(ByVal Target As Range) Dim MyRange As Range Dim LastText As String Dim LastAdres As String Set MyRange = Range("m2:m2000,u2:u2000,x2:x2000,a2:a2000") If Intersect(Target, MyRange) Is Nothing Then Exit Sub End If Application.EnableEvents = False LastText = Target.Value LastAdres = Target.Address Application.EnableEvents = True End Sub

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Excel генерира събитие Calculate всеки път, когато се вмъква или изтрива ред, ако на листа има клетка с формула. По втория въпрос за изпращане на информация до сайт, не ми се струва много правилен подхода. Винаги може да се загуби връзката и ще се получи разминаване в информацията. Освен това ще е необходим и някакъв код на сайта, който да обработи изпратените данни и да ги съхрани.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Excel генерира събитие Calculate всеки път, когато се вмъква или изтрива ред, ако на листа има клетка с формула.

    По втория въпрос за изпращане на информация до сайт, не ми се струва много правилен подхода. Винаги може да се загуби връзката и ще се получи разминаване в информацията. Освен това ще е необходим и някакъв код на сайта, който да обработи изпратените данни и да ги съхрани.

    Благодаря Кен ще погледна събитието Calculate; а относно изпращането на информацията до сайта защо си мислиш, че може да се получи разминаване? на какво евентуално може да се дължи това? Мислиш ли че е по добре да се ъпдейтва цялата информация в сайта, т.е. да се изпраща всичката необходима информация от екселския файл до сайта? Ако отговора на 2-я въпрос е да, възниква ми още един въпрос как да изпратя цял файл до сайт? С кода, който обработва изпратените данни ще се заеме друг човек.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Ако в момента на обновяване на данни във файла няма връзка с интернет, как ще се изпрати информацията към сайта ? Не мога да преценя кое ще е по-удачно за твоя случай : изпращане само на променените данни, на целия файл или работа изцяло с данни, намиращи се в база данни в интернет. Просто нямам никаква представа, какво и защо се прави.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Така е ако няма връзка с интернет или спре тока ще се получи проблем и е най разумно да се прати цялата информация, която е 2мб и мисля, че сървъра няма да се затрудни да я обработи. А как мога да изпратя цял екселски файл до уеб сайт, чрез макрос на vba? имаш ли идея? Ако е от значение сайта е правен на php.


    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    При вяка промяна на данни във файла ще се изпраща целия файл ? Вместо постоянно да изпращате по >2МБ към сървъра, помислете за някакво по-разумно решение. Цялата идея ми се вижда неправилна.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    мислех да се праща 1 или 2 пъти на ден :) може и да не е правилна идеята, ти ако имаш някаква би ли я споделил с мен? и може ли наистина да се прати целия файл до сайта чрез макрос?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Не може ли да се организира директно попъкване на данните през Internet в база данни на сървъра ?

    Предаване на данни чрез VBA ще стане, като се отвори съответния URL:

    Dim o2
        Set o2 = CreateObject("internetexplorer.application")
            o2.navigate "http://www.site.net/work/process.php?cell=A1&value=12345"
            o2.Visible = True
            o2.Quit
            Set o2 = Nothing
    Редактирано от Ken (преглед на промените)

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Не може ли да се организира директно попъкване на данните през Internet в база данни на сървъра ? не, защото в случая ще е двойна работа Ще ти кажа малко по-подробно за какво става въпрос. Работя във фирма, която няма собствен софтуер и базата с данни е на ексел т.е. имаме 10 бази :huh: екселски файлове с по няколко шита. Имаме крайни клиенти 1000 бр., които ползват вътрешен сайт и всеки се логва с потребител и парола. Та задачката е част от данните те да могат да ги виждат в този сайт, като всеки си вижда само неговите данни - а те ще се взимат от един екселски файл и само от един шит. Като цяло най-добре е да се разработи софтуер за фирмата и съответно някакъв модул, който да виждат крайните клиенти, но не им се дава пари за това и не е приоритет за момента, пък се иска крайния клиент да има достъп до дадената информация. Аз самата отговарям тези база данни на ексел да са коректни и правя различни справки. Оптимизирам процеса с някой и друг макрос, но не съм много навътре в материята. Сайта го е създал един друг колега и той го поддържа и аз общо взето нямам нито достъп до сървъра, нито знам какви ги върши там, пък и не съм компетентна в тази област. Шефа иска да направя макрос, който да праща инфото до колегата и той да направи така, че инфото да е в сайта. Колегата искаше да пращам всяка една промяна в дадената област от клетки до сайта и тя да ъпдейтва сайта. Незнам дали ти стана ясно моето описание ;) Ако една заявка по някакъв начин не стигне до сървъра всичко ще се омаже, но според колегата ми няма проблем и винаги можело нещо да се омаже. Не е проблем информацията да се ъпдейтва 1 път на ден. Затова си мисля че е най добре да се прави точно това. Самата аз не съм работила със сървър и сериозна база данни, работила съм под аксес с елементарни таблици и елементарни sql заявки, незнам и как мога да пратя "самата промяна на данни" или "целия файл" до сайта. Казала съм че незнам и ще се опитам да го направя и затова търся инфо. Кен много благодаря за помоща, ако след прочетеното ти хрумва някаква идея ще съм благодарна да я споделиш или ако можеш да направиш това, което ми трябва да кажеш за колко време и колко пари. Още веднъж благодаря.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Защо да е двойна работа ? Всички обработки на данни ще се правят само на едно място, и няма да се налагат обновявания от външни файлове, както сега. Явно имате вече някаква база данни, сравнително лесно могат да се прехвърлят данните от файловете ви на сървъра, но проблемът ще е в приложението (формите и скриптовете), които ще трябва да се напишат за работа с базата данни на сървъра. Това може да се направи от човек с необходимите познания, който на място да се запознае с текущото положение на нещтата ви, и да прецени за колко време и какво може да струва.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Точно така имаме база данни, но не е приоритет да се прави софтуер на фирмата / да се изразходват пари в точно в този момент/ Само още един въпрос имам за колко време/ приблизително/ би се ъпдейтнал екселски файл голям 2 мб? Базата данни на сървъра е sql, сайта е направен с php. А и евентуално с ftp ако се изпраща този файл ще може ли?

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Точно така имаме база данни, но не е приоритет да се прави софтуер на фирмата / да се изразходват пари в точно в този момент/

    Само още един въпрос имам за колко време/ приблизително/ би се ъпдейтнал екселски файл голям 2 мб? Базата данни на сървъра е sql, сайта е направен с php. А и евентуално с ftp ако се изпраща този файл ще може ли?

    Зависи от скоростта на връзката.

    Ако скоростта е 1 мегабит/сек , което е около 100 килобайта в секунда, за копирането на 2 мегабайта ще са нужни около 20 секунди.

    Ако сървърът е във вашата мрежа няма нужда от ftp. Копирането става между машините с нормалната команда copy или robocopy.

    Но това копиране може да се направи само ако файлът не е отворен в Excel.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Благодаря ти много Кен за помоща, имам още един въпрос, ако си компетентен по темата, за колко време данните ще се ъпдейтнат в сайта приблизително? за около 20 секунди ще се копира информацията в базата данни, а за самия ъпдейт на сайта ще е нужно още време? и ако да колко?

    Зависи от скоростта на връзката.

    Ако скоростта е 1 мегабит/сек , което е около 100 килобайта в секунда, за копирането на 2 мегабайта ще са нужни около 20 секунди.

    Ако сървърът е във вашата мрежа няма нужда от ftp. Копирането става между машините с нормалната команда copy или robocopy.

    Но това копиране може да се направи само ако файлът не е отворен в Excel.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Благодаря ти много Кен за помоща, имам още един въпрос, ако си компетентен по темата, за колко време данните ще се ъпдейтнат в сайта приблизително? за около 20 секунди ще се копира информацията в базата данни, а за самия ъпдейт на сайта ще е нужно още време? и ако да колко?

    Не мога да кажа.

    Зависи от приложението, което ще обновява данните, от производителността на системата от броя на данните. 2MB може да са много редове, следователно много заявки за обновяване, или много колони = по-малко заявки.

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.