Diskuzní fórum a databáze tipů a utilit pro AutoCAD, Inventor, Revit a další produkty Autodesk - od firmy Arkance Systems [www.cadforum.cz]
CZ | SK | EN | DE
Přihlášení
či registrace
   právě nás čte: 6788 
RSS kanál - CAD tipy RSS tipy
RSS diskuze

Diskuze Diskuzní fórum, poradna

 

NápovědaCAD diskuze, rady, výměna zkušeností

 
CAD Fórum - Homepage Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion 360, 3ds Max a s dalšími CAD aplikacemi. Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
Fórum nenahrazuje technický support firmy Arkance Systems (CAD Studio) - přímá podpora pro zákazníky funguje na helpdesk.cadstudio.cz
  FAQ FAQ  Prohledat fórum   Události   Registrovat Registrovat  Přihlásit Přihlásit

Téma uzavřenoPrepojenie VBA Acad - Excel

 Odpovědět Odpovědět archiv
Autor
predcis Zobrazit panel
Nováček
Nováček

Přihlášen: 18.srp.2005
Lokalita: Slovensko
Používám:
AutoCAD® Map 3D 2013
Stav: Offline
Bodů: 14
Přímý odkaz na tuto zprávu Téma: Prepojenie VBA Acad - Excel
    Zasláno: 15.dub.2008 v 16:34
Dobry den,
zacal som rozmyslat nad jednym programcekom, ktory by z excelu nacitaval data a podla nich by kreslil veci do autocadu. Zatial len testujem ciastkove ulohy a rozmyslam ako na vec.
Zatial som dokazal spustit z autocadu excelovske makro, problem je vsak v tom, ze sa mi nedari "najst" alebo "preniest" premenne z excelackeho makra do acadovskeho makra.
Neviete mi prosim poradit, kde v objektovej skladbe sa nachadzaju globalne premenne (ak vobec) alebo inu fintu ako na to? Jedine co ma napadlo, je vyuzit nejaky externy textovy subor, do ktoreho by som zapisal vysledok excelovskeho makra a nacital ho do acadu, ale taketo riesenie sa mi zda tazkopadne.
Uvadzam priklad :
makro excel :
Public Hodnota As String

Public Sub pokus()
forr.Show
MsgBox Hodnota 'toto zobrazi spravny vysledok
End Sub

formular forr :
obsahuje jedno tlacitko a jedno textove pole (ma nazov hhh)
Private Sub CommandButton1_Click()
    Hodnota = hhh.Value
    Unload Me
End Sub

makro v acade :
Public Sub PokusSexcelom()
    Dim Excelik As Object
    Dim Subor As String
    Dim Adresar As String
    Dim ZositExcel As Workbook
    
    Set Excelik = CreateObject("Excel.Application")
    Excelik.Visible = True
    
    Adresar = "d:\"
    Subor = "makro.xls"
    
    Set ZositExcel = Excelik.Workbooks.Add(Adresar & subor)
       
    Excelik.Run "pokus"
    
    MsgBox Excelik.hodnota 'tuto je problem

    ZositExcel.Close
End Sub

Chcel by som sa opytat, ze ako sa dostanem ku globalnej premennej Hodnota vo vnutri acadovskeho makra. Pretoze prikaz MsgBox Excelik.hodnota zobrazuje prazdnu hodnotu.

myslim, ze C-cko pozna nieco ako extern, ale vo VBA som to nenasiel.

Dakujem za kazdy napad a radu !

Lubomir Placek

P.S. Este by som sa opytal, ma VBA ekvivalent k C-ckovym prikazom continue a ++ (trochu mi chybaju) ?

Este raz vdaka.
Zpět nahoru
pavelstyl Zobrazit panel
Zasloužilý člen
Zasloužilý člen

Přihlášen: 06.říj.2004
Lokalita: Czech Republic
Používám:
AutoCAD Mech 2023, SolidEdgeE 2023
Stav: Offline
Bodů: 223
Přímý odkaz na tuto zprávu Zasláno: 16.dub.2008 v 15:03
Dobrý den,
 trošku mi uniká smysl toho čeho se snažíte dosáhnout.
Jestli tomu dobře rozumím, tak vy spustíte autocadovské makro, které spustí excelovské makro a z toho excelovského makra chcete získat hodnoty proměnných do toho autocadovského makra.
 
Návrh řešení 1:
upravit to excelovské makro tak, aby výsledek výpočtu uložil do nějakých buňek a z autocadoského makra ty hodnoty přečíst

dim sh as WorkSheet
set sh=ZositExcel.Sheet(1)
prom=sh.Cells(radek,sloupec)
 
Návrh řešení 2:
přesunout autocadovské makro do excelu a nebo excelovské do autocadu
Když budou makra v jedné aplikaci, tak ten přenos hodnot bude jednodušší
 
Nevím jestli jsem ten dotaz pochopil dobře. Zkuste nějak blíže specifikovat, co ta makra mají dělat.
 
Jestli vám to pomůže, přikládám excelovské makro, které přenese hodnoty vybraných buňek do AutoCADu.

Private Sub ToACAD_Click()
    Dim acad As AcadApplication
    Dim dwg As AcadDocument
    Dim txt_point(0 To 2) As Double
    Dim r As Integer
    Dim s As Integer
   
    On Error Resume Next
   
    txt_point(0) = 0
    txt_point(1) = 0
    txt_point(2) = 0
   
   
    Err.Clear
    Set acad = GetObject(, "AutoCAD.Application.16.2")
    If Err Then
        Err.Clear
        Call MsgBox("AutoCAD Mechanical 2006 není spuštìn", vbCritical)
        Exit Sub
    End If
    Set dwg = acad.ActiveDocument
   
    For r = Selection.Row To Selection.Row + Selection.Rows.Count - 1
        For s = Selection.Column To Selection.Column + Selection.Columns.Count - 1
           txt_point(0) = s * 25
           txt_point(1) = -r * 10
            Call dwg.ModelSpace.AddText(Cells(r, s), txt_point, "5")
        Next s
    Next r
   
    Set dwg = Nothing
    Set acad = Nothing
End Sub
 
Pavel Štyl
 
Zpět nahoru
predcis Zobrazit panel
Nováček
Nováček

Přihlášen: 18.srp.2005
Lokalita: Slovensko
Používám:
AutoCAD® Map 3D 2013
Stav: Offline
Bodů: 14
Přímý odkaz na tuto zprávu Zasláno: 18.dub.2008 v 09:51
Ďakujem za usmernenie,
mojím cieľom je načítať tabuľku z excelu (výkaz) a preniesť ju do autocadu, nie ako OLE objekt, ale ako autocadovské entity s tým, aby sa zapamätali vzorce, t.j. že ak by som potreboval upraviť výkaz, tak si celý blok (alebo acad tabuľku - túto novinku autocadu som ešte podrobne nepreskúmal) prenesiem do excelu aj so vzorcami. Takže ma čakajú ešte experimenty s setXData a getXData
Každopádne pojdem na to tým druhým spôsobom, že makro pre export do acadu naprogramujem v exceli, čím bude prenos dát bezproblémový.
Zpět nahoru

Pro technickou podporu CAD
kontaktujte Helpdesk

Příbuzné CAD tipy:
Tip 81:Jak propojit atributy bloků ve výkresu s tabulkou v Excelu?
Tip 8444:VIPNapojení iLogic na skladové tabulky.
Tip 1422:VIPJak automaticky zaznamenat VBA makro během práce v AutoCADu (jako v MS Office)?
Tip 6417:Vložení živé XLS/XLSx tabulky Excelu do DWG výkresu AutoCADu.
Tip 6490:VIPVBA aplikace v 64bitové verzi AutoCADu (kompatibilita, migrace)
Tip 9787:Jak z Excelu načíst pojmenované pracovní body do Inventoru?


 Odpovědět Odpovědět

Přejít na fórum Oprávnění fóra Zobrazit panel



Stránka byla vygenerována za 1,801 sekund.