Hallo Forum,
ich habe folgendes Problem:
Ich schreibe von Catia Werte in bestimmte Zellen meiner Exceltabelle. Diese Zellen sind in Excel mit einer Formel hinterlegt welche den Wert einer anderen Zelle verändert. Diesen veränderten Wert möchte ich dann wieder aus Excel einlesen und weiter verwenden. Mein Problem aber dabei ist, dass ich zwar diesen veränderten Wert einlesen kann aber nicht den aktuellen Wert bekomme sondern den Wert mit den von Catia vorher eingeschriebenen Werten bekomme. Ich bekomme also nicht den aktuellen Wert. Das Makro scheint also zu schnell zu sein, so dass Excel nicht hinterher kommt. Oder mein Code ist einfach falsch. Gibt es vielleicht so eine Wartefunktion oder andere Möglichkeiten?
Hier mein Code:
Sub CATMain()
'Abfrage starten
if Norm = "DIN EN 10034" then
Hoehe = InputBox ("Bitte Profilhoehe eingeben", "Abfrage Profilhoehe", Hoehe)
Breite = InputBox ("Bitte Profilbreite eingeben", "Abfrage Profilbreite", Breite)
Stegdicke = InputBox ("Bitte Stegdicke eingeben", "Abfrage Stegdicke", Stegdicke)
Flanschdicke = InputBox ("Bitte Flanschdicke eingeben", "Abfrage Flanschdicke", Flanschdicke)
end if
'Konstruktionstabelle zuweisen
Dim Rels As Relations
Set Rels = CATIA.ActiveDocument.Part.Relations
Dim KTab As DesignTable
Dim KName, Beschreibung, Pfad As CATBSTR
KName = "Konstruktionstabelle"
Beschr = "Tabelle mit Werten zur Dichteanpassung"
Pfad = "C:\Dokumente und Einstellungen\hormann\Eigene Dateien\Konstruktionstabelle.xls"
Set KTab = Rels.CreateDesignTable (KName, Beschr, false, Pfad)
'Der Konstruktionstabelle die Werte übergeben und die entsprechende Konfiguration suchen
Dim Excel As Application
Dim WB As Workbook
Dim Ws As Worksheet
Dim Spalte_D, Spalte_H, Spalte_Dicke As Double
Dim Spalte_Norm As String
Dim Zeile As Integer
Set Excel = CreateObject("Excel.Application")
Excel.Visible = false
Set WB = Excel.Workbooks.Open ("C:\Dokumente und Einstellungen\hormann\Eigene Dateien\Konstruktionstabelle.xls")
Set WS = WB.Worksheets.Item (1)
Zeile = 0
if Norm = "DIN EN 10034" then
WB.ActiveSheet.Activate
Excel.cells(284,6).Value = Hoehe
Excel.cells(284,7).Value = Breite
Excel.cells(284,8).Value = Stegdicke
Excel.cells(284,9).Value = Flanschdicke
WB.Save
end if
if Norm = "DIN EN 10034" then
KTab.Configuration = 283 (Der Wert dieser Zeile wird mit Excelformel verändert)
else
KTab.Configuration = Zeile
end if
'Parameter "Dichte_angepasst" mit Wert aus Konstruktionstabelle verknüpfen
KTab.AddAssociation Dichte_angepasst, "Dichte_angepasst" (Hier wird nicht der aktuell veränderte Wert aus Excell genommen sondern der Wert der zuvor in dieser Zelle stand)
End Sub
Für Hilfe wäre ich sehr dankbar.
mfg Tobi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP