SOLIDWORKS PDM jest doskonałym narzędziem umożliwiającym sprawne zarządzanie dokumentami w firmie. Jedną z bardzo często wykorzystywanych funkcjonalności systemu jest możliwość tzw. mapowania zmiennych z właściwościami archiwizowanych dokumentów. Oznacza to, że wartości zmiennych stosowanych na kartach danych plików mogą być wtłaczane do ich zawartości i vice versa, wartości właściwości dokumentów mogą zostać zaczytane i wprowadzone do zmiennych na karcie danych plików w przechowalni PDM.
W niniejszym artykule skupię się nad metodami jakie można wykorzystać, aby wyświetlić wartości właściwości dokumentu MS Excel w komórkach arkusza kalkulacyjnego. Przedstawione na ilustracjach funkcje MS Excel mogą się różnić w zależności od posiadanej wersji pakietu MS Office.
Mapowanie zmiennych z dokumentami MS Office
W artykule „SOLIDWORKS PDM: Odświeżanie zmapowanej zawartości MS Word w SW PDM za pomocą makra („AutoOpen”)” opisałem w jaki sposób można zmapować zmienne w systemie PDM z właściwościami dokumentów Microsoft Office. W tym samym miejscu również opisałem jak można zaczytać wartości właściwości MS Word do jego treści wraz z instrukcją wdrożenia makra, które przy uruchomieniu dokumentu jest w stanie odświeżyć zawartość zaczytanych właściwości. Zachęcam do zapoznania się w pierwszej kolejności z powyższym artykułem przed przystąpieniem do dalszej lektury.
Metoda 1: Wykorzystanie „nazwanych zakresów” w MS Excel do powiązania treści z wartościami właściwości niestandardowych
Jednym ze sposobów jest możliwość utworzenia tzw. nazwanych zakresów w MS Excel oraz powiązanie ich z właściwościami niestandardowymi. Plusem takiego rozwiązania jest to, że z powodzeniem będzie działać w skoroszytach bez obsługi makr. Minusem jednak, że cały, opisany poniżej, proces powiązania komórki z właściwością każdorazowo należy wykonać dla wszystkich właściwości.
Utworzenie nazwanego zakresu
W pierwszej kolejności w dokumencie Excel należy utworzyć tzw. nazwany zakres. W tym celu należy wpisać dowolną, wzorcową wartość do komórki pliku, a następnie „nazwać” komórkę w „polu nazwy”. Po wprowadzeniu nazwy dla pola należy potwierdzić działanie klawiszem Enter, w przeciwnym razie zmiana nie zostanie zapisana.
Powiązanie nazwanego zakresu z właściwością niestandardową MS Excel
Następnie należy przejść do właściwości dokumentu MS Excel (Plik->Informacje->Właściwości->Właściwości zaawansowane) oraz utworzyć właściwość niestandardową, z którą chcemy powiązać wartość nazwanego zakresu. W tym celu po wpisaniu nazwy właściwości potrzeba zaznaczyć checkbox „Łącze do zawartości” oraz z listy rozwijalnej wybrać nazwę nazwanego zakresu. Po zaakceptowaniu powstanie właściwość niestandardowa, powiązana z wartością nazwanego zakresu.
Wykorzystanie utworzonej właściwości niestandardowej i nazwanego zakresu
Nazwany zakres można zaczytywać do innych komórek arkuszy kalkulacyjnych po wpisaniu znaku równości. Aktualizacja komórki nazwanego zakresu spowoduje aktualizację tej wartości we wszystkich miejscach w których jej wartość została zaczytana.
Natomiast dzięki temu, że nazwany zakres jest powiązany z właściwością niestandardową, wartość ta może być z powodzeniem aktualizowana za pośrednictwem karty danych w przechowalni PDM. Jednak warunkiem poprawnego działania jest zarówno wyznaczenie obszaru w arkuszu kalkulacyjnym do przechowywania nazwanych zakresów jak i prawidłowego zmapowania atrybutów zmiennych w PDM. Poniżej za zrzucie zaprezentowałem, które pola w systemie PDM odpowiadają którym w MS Excel.
Metoda 2: Makro „GetProperty” pozwalające na zaczytanie wartości właściwości do komórek w MS Excel
Drugą metodą zaczytywania wartości właściwości niestandardowych do komórek w MS Excel jest wykorzystanie makra, które umożliwi zaczytywanie danych bezpośrednio z właściwości niestandardowych. Plusem takiego rozwiązania jest brak konieczności tworzenia nazwanych zakresów oraz umożliwienie obsługi właściwości, które dopiero zostaną dodane do istniejącego dokumentu MS Excel. Minusem – konieczność wykorzystania dokumentu obsługującego makra (zapisanie MS Excel do formatu *.xlsm).
Pokazanie wstążki „Deweloper” z funkcjami programistycznymi
W pierwszej kolejności należy dodać do dokumentu makro, które pozwoli na zaczytanie danych bezpośrednio z właściwości niestandardowych. W tym celu, sam dokument należy zapisać w formacie *.xlsm, a następnie przejść do panelu Visual Basic w dokumencie. Aby to zrobić należy najpierw wyświetlić wstążkę „Deweloper” (domyślnie jest ukryta) poprzez kliknięcie prawym klawisze myszy na dowolną wstążkę i wybierając polecenie „Dostosuj Wstążkę…”
A następnie wskazać, aby została wyświetlona wstążką „Deweloper”.
Po zaakceptowaniu, funkcje programistyczne na wstążce „Deweloper” będą widoczne.
Dodanie makra „GetProperty” do skoroszytu
Jeśli wstążka „Deweloper” jest widoczna, należy z jej poziomu przejść do panelu Visual Basic.
Następnie należy dodać nowy moduł (ang. Module) w drzewie Project Explorer. Jeśli drzewo Project Explorer nie jest widoczne, można je uruchomić z menu View->Project Explorer.
Następnie, proszę wkleić poniższy skrypt:
Public Function GetProperty(P As String, Optional WorkbookName As Variant) ' 'P A String containing the name of the property ' 'WorkbookName A String containing the name of the workbook whose property Is To be ' retrieved. If missing, And the Function Is called from a worksheet cell, ' the workbook containing the cell Is used. If missing, And the workbook ' Is called from VBA, the ActiveWorkbook Is used. Application.Volatile Dim S As Variant Dim WB As Workbook On Error Resume Next If IsMissing(WorkbookName) Then If TypeOf Application.Caller Is Range Then Set WB = Application.Caller.Parent.Parent Else Set WB = ActiveWorkbook End If Else Set WB = Workbooks(WorkbookName) End If S = WB.CustomDocumentProperties(P) If S <> "" Then GetProperty = S Exit Function End If On Error Goto EndMacro GetProperty = WB.BuiltinDocumentProperties(P) Exit Function EndMacro: GetProperty = "" End Function
W efekcie, makro powinno wyglądać jak niżej. Należy zwrócić uwagę, czy procedura została prawidłowo opisana na „GetProperty”. Jeśli wszystko się zgadza, proszę zapisać makro i zamknąć panel Visual Basic.
Wykorzystanie formuły „GetProperty” do zaczytania wartości właściwości niestandardowej
Dzięki nowo utworzonemu makru, w arkuszu kalkulacyjnych będziemy mieli widoczną nową funkcję. W celu jej wykorzystania należy w komórce wpisać polecenie „=GetProperty”.
Po wybraniu funkcji, w nawiasie i cudzysłowie należy podać nazwę właściwości niestandardowej, której wartość chcemy wyświetlić w komórce arkusza.
Dzięki temu, do komórki zostanie zaczytana wartość zmapowanej właściwości dokumentu. Oczywiście podobnie jak w metodzie 1, warunkiem poprawnego działania jest prawidłowe zmapowanie zmiennych PDM z właściwościami niestandardowymi MS Excel.
UWAGA:
Ponieważ w metodzie 2 wykorzystujemy makro dodane do arkusza kalkulacyjnego, celem prawidłowego działania musimy zezwolić, aby MS Excel mógł wykorzystywać zaszyte w nim makra. Szczegółowe informacje jak prawidłowo zezwalać na wykorzystanie makr jest opisane w artykule od Microsoft: Zmienianie ustawień bezpieczeństwa makr w programie Excel.