Arrestare la macro su shell
Hai un problema con Excel? 
Arrestare la macro su shell
di Tullio (utente non iscritto) data: 24/09/2013 17:38:14
Buonasera a tutti,
eccomi di nuovo.
Avrei la necessità di aprire un file.xls chiuso per copiare il foglio esistente "Fattura" nel foglio vuoto del progetto attivo che si chiama "Xnotule" .
Ho provato ad aprirlo con "shell", ma nel tempo che apre explorer la macro prosegue.
Mi ridate una mano?
di HarryBosch data: 24/09/2013 20:37:12
Mostraci la macro così vediamo come intervenire.
E personalmente, non utilizzerei il comando Shell per aprire un altro file Excel; ad esempio, non è più immediata un'istruzione di questo tipo?
Workbooks.Open Filename:="C:user...
omefile.xlsx"
Arrestare la macro su shell
di Tullio (utente non iscritto) data: 25/09/2013 18:32:57
Buonasera,
l'utilizzo di "shell" per aprire il file è dato dal fatto che la cartella "C:contabilità2013Progetti 2013" ci sono tutti i file (progetti di notula) prodotti e salvati come ".xls" ma anche "pdf" e non ancora trasformati in notule e pertanto devo scegliere quello da trasformare.
Non saprei come fare altrimenti, creare un file excel che mi legge la cartella e consente di scegliere?
La procedura si articola così dopo l'apertura della "BASE PROGETTI.XLS"
1° passo: produzione attraverso il foglio "Fattura" del progetto di notula
2° passo: salvataggio del foglio "Fattura" con nome "x" del progetto di notula e riferimenti nella cartella prima citata.
3° passo: apertura tramite "shell" del progetto "x" per la trasformazione in notula
4° passo: copiare il contenuto foglio "Fattura" del progetto "x" sul foglio "Xnotule"
5° passo: trasformazione del progetto "x" in notula e salvataggio della notula in "C:contabilità2013Notule 2013"
La seguente cancellazione del progetto di notula viene fatta manualmente dopo i dovuti riscontri.
-----------
Oltre a non poter arrestare la macro, mi ritrovo con il foglio "Xnotule" che contiene il progetto che si trova nel foglio "Fattura" della "BASE PROGETTI".
Spero di essere stato sufficientemente chiaro.
Grazie.
Tullio
Sub Importa_progetto()
' Importa_progetto Macro
Dim X
X = Shell("Explorer.exe " & "C:contabilità2013PROGETTI 2013", 1)
If GetInputState() = 0 Then
Else
If msgbox("Trasformare il progetto in NOTULA ?", vbYesNo) = vbNo Then Exit Sub
End If
'F = NewFile
Workbooks(ActiveWorkbook.Name).Sheets("Fattura").Select
Cells.Select
Selection.Copy
ActiveWorkbook.Close
Windows("BASE PROGETTI CON SCADENZE.xls").Activate
Sheets("Xnotule").Select
Cells.Select
ActiveSheet.Paste
Range("C55:E59").Select
Application.CutCopyMode = False
Selection.ClearContents
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
Selection.Borders(xlEdgeTop).LineStyle = xlNone
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("B12").Select
ActiveCell.FormulaR1C1 = "NOTULA"
Range("C15").Select
ActiveCell.FormulaR1C1 = ""
Workbooks(Nomeprogetto).Activate
ActiveWindow.Close
Call vai_ultima_cella
Sheets("Xnotule").Activate
Sheets("Xnotule").Cells(14, 3) = vecchionumero + 1
End Sub
|
di Tullio (utente non iscritto) data: 26/09/2013 18:56:48
Ciao a tutti,
ho allegato alla discussione due file che utilizzo per le prove con all'interno la macro che dovrebbe svolgere l'interruzione di shell e tutto spiegato nella precedente.
Lo fà ma solo se la procedura è fatta con F8, passo passo, se lancio la macro succede un bordello. Ma perché ? Qualcuno lo sa o c'ho i topi nel computer ?
Grazie.
Tullio
Sub lanciashell()
Dim a, X, Y, Appena_aperto
a = False
Do While a = False
X = Shell("Explorer.exe " & "C:contabilità2013NOTULE 2013", 1)
If MsgBox("Trasformare il progetto in NOTULA ?", vbYesNo) _
= vbNo Then
Workbooks.Close
Exit Sub
Else
Windows(ActiveWorkbook.Name).Activate
ActiveWorkbook.Sheets(1).Select
a = True
Range("B2:H65").Select 'Seleziona le celle da copiare
Selection.Copy
Windows("Corso Excel.xlsm").Activate
Sheets("Xnotule").Select
Range("B2:H65").Select
ActiveSheet.Paste
Windows("Prova salvataggio con registrazione.xls").Activate
Workbooks("Prova salvataggio con registrazione.xls").Close
End If
Loop
End Sub
|
di Tullio (utente non iscritto) data: 26/09/2013 21:42:21
Di nuovo.
Nel precedente messaggio mi sono dimenticato di dire la sequenza.
Aprire per primo "Corso E..." che contiene la macro l'altro è quello che viene copiato.
di Tullio (utente non iscritto) data: 30/09/2013 19:15:13
Vuoi Approfondire?