Jak używać makr ONLYOFFICE do automatyzacji czyszczenia arkuszy kalkulacyjnych
Czyszczenie arkusza kalkulacyjnego jest powtarzalne: eksportowane nazwy zawierają dodatkowe spacje, wklejany tekst zawiera nierozdzielane spacje, a formuły lub identyfikatory mogą zostać uszkodzone przez zamiany. Makro ONLYOFFICE może ujednolicić tekst w zdefiniowanym zakresie, pozostawiając wartości liczbowe i komórki formuł bez zmian. Poniższy przykład obsługuje tylko spacje; usuwanie duplikatów, konwersja dat i usuwanie pustych wierszy wymagają osobnych reguł.
Dokumentacja sprawdzona 6 października 2026 r. Makra ONLYOFFICE korzystają z JavaScript z interfejsem API JavaScript pakietu Office, a nie z języka VBA w programie Excel. Aktualna dokumentacja edytora otwiera obszar roboczy makr w menu Widok → Makra . Dokładny wygląd paska narzędzi może się różnić w zależności od wersji na komputerze stacjonarnym i hostowanej.
Zadania czyszczące, które może obsłużyć ta makro
Przykład usuwa spacje początkowe i końcowe lub tabulatory, zamienia spacje nierozdzielające na spacje zwykłe oraz scala powtarzające się spacje lub tabulatory w tekście. Pomija formuły i wartości, które nie są ciągami znaków. Ten wąski zakres zmniejsza ryzyko zmiany dat, kwot lub komórek obliczeniowych podczas przygotowywania importu cyklicznego.
Problem z danymi
Co robi próbka
Przejrzyj przed automatyzacją
Spacje i tabulatory na początku i na końcu
Usuwa je z komórek tekstowych
Zwykle bezpieczne dla nazw i etykiet, ale sprawdź pola, w których odstępy mają znaczenie
Spacje nierozdzielane
Zastępuje je zwykłymi spacjami
Przydatne w przypadku kopiowanego tekstu internetowego; należy sprawdzić pole źródłowe
Powtarzające się spacje lub tabulatory
Zwęża każdy przebieg do jednej przestrzeni
Nie stosować w przypadku tekstu o stałej szerokości lub celowego wcięcia
Formuły, liczby i wartości logiczne
Pozostawia je niezmienione
Sprawdź, czy komórki formuły nadal są obliczane po uruchomieniu
Duplikaty wierszy, daty, puste wiersze
Nie zmienia ich
Najpierw zdefiniuj reguły biznesowe; nie są to jedynie kosmetyczne poprawki
1. Przygotuj kopię i określ zakres
Zapisz kopię roboczą arkusza kalkulacyjnego przed uruchomieniem jakiegokolwiek makra modyfikującego komórki. Zidentyfikuj arkusz kalkulacyjny i wiersze danych do wyczyszczenia. W poniższym kodzie A2:D500znajduje się przykładowy zakres: zakłada się, że wiersz 1 zawiera nagłówki, a dane są oczekiwane w kolumnach od A do D. Zmień ten adres, aby pasował do Twojego arkusza. Użyj zakresu ograniczonego, obejmującego zamierzone rekordy i nie uwzględniaj notatek, formuł ani niepowiązanych kolumn.
Mały arkusz kalkulacyjny zapewnia ograniczoną próbkę; wiersz nagłówka powinien znajdować się poza zakresem czyszczącym.
Na początek skopiuj kilka reprezentatywnych rekordów do arkusza tymczasowego lub zduplikuj plik i skróć zakres, np A2:D10. . Dołącz przykłady ze zwykłymi spacjami, wklejonym tekstem, pustymi komórkami i formułami, aby sprawdzić, jak makro traktuje każdy przypadek.
2. Otwórz edytor makr ONLYOFFICE
Otwórz arkusz kalkulacyjny w Edytorze arkuszy kalkulacyjnych ONLYOFFICE i wybierz Widok → Makra . Utwórz nowe makro w oknie makr lub wybierz nowy moduł, a następnie nadaj mu jasną nazwę, np CleanTextWhitespace. . Oficjalny podręcznik wprowadzający do makr ONLYOFFICE dokumentuje ten punkt wejścia i kontrolę uruchamiania.
Wstążka Widok zawiera kontrolkę Makra służącą do otwierania obszaru roboczego makr.
Jeśli makra są wyłączone w ustawieniach edytora, przejrzyj Ustawienia → Ustawienia zaawansowane → Makra . Opcje dokumentów ONLYOFFICE pozwalają na wyłączenie makr, wyświetlenie powiadomienia lub ich włączenie. W przypadku skoroszytu, którego nie utworzyłeś, nie włączaj wszystkich makr globalnie, aby uruchomić tylko jeden skrypt; sprawdź kod i postępuj zgodnie z polityką obowiązującą w Twojej organizacji.
3. Wklej tę ograniczoną makroinstrukcję uwzględniającą formułę
(function () {
var oSheet = Api.GetActiveSheet();
var oRange = oSheet.GetRange("A2:D500");
var nRows = oRange.GetRowsCount();
var nCols = oRange.GetColumnsCount();
for (var r = 1; r <= nRows; r++) {
for (var c = 1; c <= nCols; c++) {
var oCell = oRange.GetCells(r, c);
var sFormula = oCell.GetFormula();
// Do not replace formulas with their displayed results.
if (sFormula) {
continue;
}
var v = oCell.GetValue();
// Restrict this cleanup to text constants.
if (typeof v !== "string") {
continue;
}
var sClean = v
.replace(/\u00A0/g, " ")
.replace(/[ \t]+/g, " ")
.replace(/^[ \t]+|[ \t]+$/g, "");
// SetValue treats strings beginning with "=" as formulas.
if (sClean.charAt(0) === "=") {
continue;
}
if (sClean !== v) {
oCell.SetValue(sClean);
}
}
}
})();
Panel kodu pokazuje zakres i metody odczytu komórek używane przez makro czyszczące.
Przekazywane liczniki wierszy i kolumn GetCellssą względne w stosunku do wybranego zakresu; przykłady API wykorzystują pozycje numerowane do dostępu do komórki. Makro najpierw odczytuje formułę każdej komórki i pomija ją, gdy formuła jest obecna. Następnie odczytuje wartość i edytuje tylko ciągi znaków, które faktycznie ulegają zmianie. Ciąg znaków, który po przycięciu stałby się formułą ze znakiem równości, również jest pomijany, ponieważ SetValuemoże interpretować znak równości na początku jako formułę.
Wyrażenie „whitespace” celowo pomija podziały wierszy. Nie zmienia ono wielkości liter, znaków interpunkcyjnych, wartości liczbowych ani numerów seryjnych dat. Jeśli źródło zawiera notatki wielowierszowe, pola o stałej szerokości lub identyfikatory ze specjalnymi odstępami, przetestuj te kolumny osobno i dostosuj zasady zamiast stosować ogólną normalizację.
4. Uruchom raz, a następnie sprawdź wynik
Uruchom makro z edytora makr. Ponieważ aktualizuje ono komórki w zaznaczonym zakresie, sprawdź zmieniony tekst w kopii roboczej przed zapisaniem go w pliku źródłowym. Porównaj kilka wierszy z oryginałem, w tym pierwszy i ostatni wiersz w zakresie. Upewnij się, że nagłówki pozostały nienaruszone, formuły nadal działają, a komórki numeryczne, takie jak daty, waluty i identyfikatory, nie uległy zmianie.
Za pomocą arkusza roboczego sprawdź reprezentatywne wiersze i porównaj je z nienaruszonym tekstem.
W przypadku dużego arkusza, filtruj lub wyszukaj podejrzane spacje przed i po uruchomieniu, a następnie porównaj liczbę wierszy. Makro nie usuwa wierszy, nie deduplikuje rekordów, nie konwertuje dat ani nie wypełnia pustych miejsc, dlatego te kontrole powinny koncentrować się na wartościach tekstowych. Jeśli potrzebujesz widocznego śladu audytu, dodaj osobną kolumnę przeglądu lub skopiuj oczyszczone wyniki do arkusza przejściowego, zamiast zapisywać komunikaty o stanie w dowolnej komórce.
Typowe zasady sprzątania wymagające osobnej decyzji
Duplikaty rekordów: Przed usunięciem wierszy zdecyduj, które kolumny definiują duplikat i czy powtarzające się transakcje są prawidłowe. Dwie identyczne nazwy niekoniecznie reprezentują tę samą osobę lub zamówienie.
Puste komórki i puste wiersze: Pusta komórka, zero i wartość tekstowa, taka jak „N/D”, mają różne znaczenia. Nie należy ich zastępować ani usuwać bez reguły danych.
Daty i liczby przechowywane jako tekst: Najpierw wybierz oczekiwany format i ustawienia regionalne. W tym przykładzie unika się konwersji tych wartości, ponieważ ciąg znaków, taki jak „ 03/04/2026jest niejednoznaczny w różnych regionach”.
Zera wiodące: Importuj identyfikatory, takie jak 00127tekst. Jeśli arkusz kalkulacyjny zapisał je już jako liczby, przycięcie tekstu nie przywróci brakujących zer.
Normalizacja wielkości liter: pisanie adresów e-mail małymi literami lub kodów stanów wielkimi literami może pomóc w przypadku określonych pól, ale stosowanie tej zasady w przypadku nazw lub opisów produktów może zniweczyć zamierzone użycie wielkich liter.
Używaj makr ONLYOFFICE, gdy powtarzalną regułę można precyzyjnie wyrazić i przetestować na kopii. System makr jest oparty na JavaScript, a nie na VBA, jest dołączony do dokumentu, a nie dostępny globalnie, i nie ma bezpośredniego dostępu do systemu plików ani sieci, jak wyjaśniono w FAQ dotyczącym makr ONLYOFFICE . Ta piaskownica ogranicza zakres działania makra poza edytorem, ale nadal może ono zmieniać zawartość skoroszytu, dlatego przed uruchomieniem przejrzyj i przetestuj kod.
W przypadku cyklicznych importów przechowuj skrypt w kontrolowanym szablonie lub kopii dokumentu i korzystaj z krótkiej listy kontrolnej: potwierdź aktywny arkusz, zaktualizuj adres zakresu, wyklucz nagłówki i formuły, uruchom na kopii, sprawdź wyrywkowo edytowane ciągi i porównaj ostateczny skoroszyt z oryginałem przed zapisaniem lub udostępnieniem.