2014-12-15 30 views
6

Mam serię około 30 raportów programu Excel (.xlsm), z których każdy ma unikalne połączenie skonfigurowane do bazy danych. Połączenie to krótki skrypt SQL, który pobiera dane do wyświetlenia w raporcie. Dane są umieszczane w tabeli (nie w tabeli przestawnej).Połączenie skoroszytu programu Excel powoduje, że rozmiar pliku jest duży

Każdego tygodnia musimy aktualizować te raporty, więc używam prostego skryptu PowerShell, aby otworzyć każdy z plików i odświeżyć połączenie.

Co jakiś czas musimy wysyłać podstawowe raporty 30 do innych grup roboczych, aby mogły ręcznie samodzielnie aktualizować pliki. Może to być uciążliwe, ponieważ niektóre raporty są bardzo duże (30 MB +). To sprawia, że ​​wysyłanie wiadomości e-mail jest trudne, a przesyłanie ich/pobieranie ich kilka razy dziennie to tylko kłopot.

Aby temu zaradzić, zanim rozprowadzimy szablony raportów, spróbuję usunąć wszystkie wiersze w tabelach i każdy nieużywany zakres. Pomogło to, ale wciąż jest kilka plików, które są BARDZO duże (30 MB +), mimo że usunęliśmy wszystko w skoroszycie, z wyjątkiem połączenia i pustej tabeli.

Dzięki testom zdałem sobie sprawę, że jeśli usunę skonfigurowane połączenie, rozmiar pliku stanie się wystarczająco mały (< 1mb), co jest tym, czego oczekiwałbym. To prowadzi mnie do przekonania, że ​​połączenia Excel mają pewien rodzaj pamięci podręcznej, którą należy wyczyścić, jednak nie mogę znaleźć dla niej żadnych odniesień.

Czy ktoś zna prosty sposób na zmniejszenie rozmiaru połączenia w taki sposób, że mógłbym to zrobić programowo używając VBA/Powershell?

+0

Dobre pytanie. Nie znaczy to, że ten komentarz jest odpowiedzią na twoje pytanie, ale rozważałeś rozwiązanie w chmurze lub ftp. Czy pliki znajdują się na udostępnionym dysku sieciowym i całkowicie pomijają problem z pocztą e-mail? Wciąż jestem zainteresowany RZECZYWISTYM rozwiązaniem tego problemu, ponieważ prawdopodobnie zechcesz to zrobić bez względu na to, czy pominiesz problem z pocztą e-mail, czy nie. – peege

+0

Jeśli otworzysz plik .xlsm w programie archiwum, takim jak winzip lub 7 zip, zobaczysz elementy, które składają się na plik. Czy jest w tym jakiś konkretny element, który jest bardzo duży? Jak już mówisz, wygląda na to, że twoje dane źródłowe są buforowane w pewnym stopniu: –

+3

Jeśli usunięcie skonfigurowanego połączenia powoduje zmniejszenie rozmiaru pliku, możesz po prostu napisać makro, aby usunąć połączenia, a drugie je przywrócić? – TheEngineer

Odpowiedz

1

Jeśli usunięcie skonfigurowanego połączenia powoduje, że rozmiar pliku jest wystarczający, można napisać makro, aby usunąć połączenia, a drugie, aby je przywrócić. Zgodnie z sugestią Noldor130884, możesz automatycznie wykonywać makra na Workbook_Open i Workbook_Close.

+0

Dzięki za to. Nie znalazłem sposobu na wyczyszczenie pamięci podręcznej danych. Zamiast tego wydaje się to najbardziej rozsądnym podejściem. –

0

Wygląda na to, że problem dotyczy formatowania. Nie wiem dlaczego, ale w moich plikach excel ponownie sformatowano wszystkie wiersze i kolumny podczas dodawania formularza z danymi z połączenia. Tak więc arkusz był bardzo duży, ale jeśli sprawdzasz plik xml, pokazuje on tylko dane formatowania. Po usunięciu ręcznie wszystkich "pustych" wierszy rozmiar pliku jest znowu normalny. Nadzieja, która pomaga, pomogła w moim przypadku.