Witam.
Z powodów wewnętrznych musimy wkleić fragment tabeli Excela do naszych rysunków.
Wszystko idzie gładko, ale podczas otwierania plików pojawia się ten komunikat bezpieczeństwa. (patrz PC)
Czy istnieje sposób na ominięcie tego komunikatu, aby już się nie pojawiał, ponieważ blokuje nasze zadania automatycznej konwersji za pośrednictwem EPDM lub MYCADTOOL.
Z góry dziękuję za wasze oświecenie.
A. Mendes
alerte_secu_excel.png
Witam;
Ten typ wiadomości jest dość podobny do alertów makr programu Excel. Czy w twojej tabeli nie byłoby trochę do skopiowania?
Jak wykonać klejenie? za pomocą obiektów OLE czy za pomocą prostego kopiowania i wklejania?
Pytanie pomocnicze brzmi: czy masz formatowanie warunkowe w swoim programie Excel?
Czy nie jest możliwe użycie Tabeli ogólnej zamiast tego zgłoszonego dokumentu?
Jeśli jesteś zainteresowany, mam makro (Solidworks) do importowania komórek Excela do MEP w postaci nowej tabeli.
Pozdrowienia.
import_from_excel.swp
1 polubienie
Hello@Mclane
Mój kolaż jest wykonany za pomocą prostego kopiuj-wklej, który automatycznie generuje dla mnie obiekt OLE.
Tak, formatowanie warunkowe w tabeli.
Do implementacji ogólnej tabeli, dlaczego nie tylko jeśli odbywa się to za pomocą makra. Więc w końcu jestem biorcą.
Dziękuję za przyjrzenie się temu tematowi.
A. Mendes
A. Mendes;
Właśnie udostępniłem moje makro w poprzednim poście.
Oto kod....
' Prerequis: Une Mise en plan Solidworks est ouverte, Un excel est ouvert et la zone à importer est selectionnée.
Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
ImportTable swDraw
End Sub
Sub ImportTable(drawingSheet As SldWorks.DrawingDoc)
Dim swTable As SldWorks.TableAnnotation
Dim swAnn As SldWorks.Annotation
Dim nNumCol As Long
Dim nNumRow As Long
Dim sRowStr As String
Dim i As Long
Dim j As Long
Dim objExcelObject As Excel.Application
Dim objBook1 As Excel.Workbook
Dim objSheet1 As Excel.Worksheet
Dim iRows As Integer
Dim iCols As Integer
Dim sBase As String
MsgBox ("Ouvrez un fichier Excel,et selectionnez les cellules à importer." & Chr(10) & "...." & Chr(10) & "Cliquez sur 'OK' pour debuter l'importation.")
Set objExcelObject = GetObject(, "Excel.Application")
If objExcelObject Is Nothing Then
MsgBox "Un fichier Excel doit être ouvert." & Chr(10) & "Fin de la macro."
Else
iRows = objExcelObject.Selection.Rows.Count
iCols = objExcelObject.Selection.Columns.Count
sBase = objExcelObject.Selection.Cells(1, 1).Address
Dim sWidth As Double
Dim sHeight As Double
drawingSheet.GetCurrentSheet().GetSize sWidth, sHeight
Set swTable = drawingSheet.InsertTableAnnotation2(False, 0, sHeight, swBOMConfigurationAnchor_TopLeft, "", iRows, iCols)
For i = 0 To iRows - 1
Dim cell As Range
For j = 0 To iCols - 1
Set cell = objExcelObject.Selection.Range("A1").Offset(i, j)
If i = 0 Then
' Definition des largeurs de colonnes
swTable.SetColumnWidth j, cell.ColumnWidth * 7.5 / 4000, swTableRowColChange_TableSizeCanChange
End If
' Definition du format des cellules
Dim tf As TextFormat
Set tf = swTable.GetTextFormat
tf.Bold = cell.Font.Bold
tf.Strikeout = cell.Font.Strikethrough
tf.Italic = cell.Font.Italic
If cell.Font.Underline > 0 Then tf.Underline = True
tf.CharHeightInPts = cell.Font.Size
' Definition du format du texte
swTable.SetCellTextFormat i, j, False, tf
' Alignement des cellules
swTable.CellTextHorizontalJustification(i, j) = Switch(cell.HorizontalAlignment = XlHAlign.xlHAlignRight, swTextJustificationRight, cell.HorizontalAlignment = XlHAlign.xlHAlignCenter, swTextJustificationCenter, True, swTextJustificationLeft)
swTable.CellTextVerticalJustification(i, j) = Switch(cell.VerticalAlignment = XlVAlign.xlVAlignBottom, swTextAlignmentBottom, cell.VerticalAlignment = XlVAlign.xlVAlignCenter, swTextAlignmentMiddle, True, swTextAlignmentTop)
swTable.Text(i, j) = cell
Next j
' Definition des Hauteur de colonnes
swTable.SetRowHeight i, cell.RowHeight / 0.75 / 4000, swTableRowColChange_TableSizeCanChange
Next i
End If
Set objSheet1 = Nothing
Set objBook1 = Nothing
Set objExcelObject = Nothing
End Sub
2 polubienia
@Mclane
Dziękuję bardzo. Postaram się jak najszybciej zgłębić temat, ale na razie jestem przeciążony pracą.
Jeśli w międzyczasie niestety znajdziesz rozwiązanie dla tej wiadomości, zawsze jestem zainteresowany.