Newsgroup: it.comp.lang.visual-basic
Titolo: help per macro excel!!!!!!!!!!!!!!

salve a tutti,
ho creato la macro che trovate sotto(dovrebbe cambiare la label dello
sheet con il parametro passato) e che necessita di un passaggio di un
parametro.
Devo farla eseguire e ho 2 problemi.
1)come farlo da excel
2)qual'e' la sintassi corretta per eseguirla da un altro programma.
grazie in anticipo
G.
Sub Macro1(ByVal parametro As String)
    Sheets("Foglio1").Select
    Sheets("Foglio1").Name = parametro
End Sub
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
news:911b3efd8ed9767c8a5...@mygate.mailgate.org...


 Per rispondere in privato rimuovere NOSPAM
-- 


 wrote in message
news:5845188e1220c5091b9...@mygate.mailgate.org...


 End Sub
Per rinominare un Foglio di lavoro non e' necessario selezionarlo ma e'
sufficiente fornire un riferimento completo che permetta di identificarlo
univocamente, a meno che tu non voglia far compiere a Macro1 entrambe le
funzioni. Potresti allora passare, invece del solo nuovo nome, anche un
riferimento all'oggetto che intendi selezionare e rinominare:
    Public Sub Macro1(ByVal Sh As Object, ByVal NuovoNome As String)
        With Sh
            .Select
            .Name = NuovoNome
        End With
    End Sub
Ed il codice di esempio che esegue tale macro potrebbe essere:
    Public Sub EseguiMacro1()
        Macro1 ActiveWorkbook.Sheets(1), "Pippo"
    End Sub
Entrambe queste routine le ho scritte in un "Modulo". Come farle eseguire da
un altro programma? Dipende... dal programma. Cosa intendi?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 Maurizio
sicuramente la soluzione da te indicatami e' la migliore
ma, il problema rimane:
come scrivevo "
IL programma da cui io chiamo la macro e' scritto in smalltalk
(smalltalk ed excel comunicano via dde)
riesco a chiamare ed eseguire delle macro senza passaggio di parametri
con la seguente sintassi:
ddeExecute: '[RUN("Macro1")]'.
il mio problema e' individuare la sintassi corretta 
per passare la stringa alla macro
"
sapete darmi qualche dritta
grazie
G.


 "
Ho capito. Scusa ma non avevo ancora letto gli altri post del 3d.
Dunque... DDE, vero?... Credo proprio che non si possa eseguire una routine
con argomenti. Io userei una Cartella di lavoro di appoggio, magari
nascosta, con una bella cella di nome, per esempio, "NuovoNome" (e altre,
come vedrai piu' sotto) e passerei l'argomento con DDEPoke a tale cella,
quindi eseguirei la chiamata. Ho usato Word invece di SmallTalk ma credo
vada bene egualmente. Piu' o meno cosi':
WinWord:
Option Explicit
Public Sub EseguiRinominaFoglio()
  Dim lChannelNumber As Long
  lChannelNumber _
    = DDEInitiate( _
          App:="Excel" _
        , Topic:="CARTEL1.XLS")
  DDEPoke _
      Channel:=lChannelNumber _
    , Item:="NomeCartella" _
    , Data:="CARTEL2.XLS"
  DDEPoke _
      Channel:=lChannelNumber _
    , Item:="VecchioNome" _
    , Data:="Foglio1"
  DDEPoke _
      Channel:=lChannelNumber _
    , Item:="NuovoNome" _
    , Data:="Pippo"
  DDEExecute _
      Channel:=lChannelNumber _
    , Command:="[RUN(""CARTEL1.XLS!RinominaFoglio"")]"
  DDETerminate lChannelNumber
End Sub
Excel:
Option Explicit
Public Sub RinominaFoglio()
  With ThisWorkbook.Worksheets("Foglio1")
    Workbooks(.Range("NomeCartella").Value) _
      .Sheets(.Range("VecchioNome").Value).Name _
        = .Range("NuovoNome").Value
  End With
End Sub
