SOLIDWORKS PDM – Zaczytanie zmapowanej zawartości MS Excel do komórek za pomocą makra („GetProperty”)

HomeRozwiązania

SOLIDWORKS PDM – Zaczytanie zmapowanej zawartości MS Excel do komórek za pomocą makra („GetProperty”)

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.