Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

esecuzione automatica file excel su server

Hai problemi con i file Zip, vuoi formattare l'HD, non sai come funziona FireFox? O magari ti serve proprio quel programmino di cui non ricordi il nome! Ecco il forum dove poter risolvere i tuoi problemi.

Moderatori: Dylan666, hydra, gahan

esecuzione automatica file excel su server

Postdi feno » 08/06/05 11:34

Ciao a tutti,
mi succede una cosa abbastanza strana.

Ho un w 2000 server con excel installato.
ho una azione pianificata che fa partire un file .bat ogni mattina con una determinata user.
all'interno del bat dopo una serie di operazioni lancio un file xls (es c:\pippo.xls)
nel file xls c'è una macro che fa tutta una serie di attività.

Ecco il problema: quando arrivo al mattino non ha eseguito le operazioni del file xls mentre ha eseguito tutte le altre operazioni nel bat. Inoltre mi trovo excel in esecuzione dal task manager e l'azione pianificata in esecuzione.
Qualche idea?

N.B.1: se lancio l'operazione pianificata mentre sono loggato sulla macchina funziona perfettamente
N.B.2: il livello di protezione delle macro è impostato a basso(non chiede nulla).
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Sponsor
 

Postdi feno » 08/06/05 15:17

secondo voi potrebbe essere che avendo messo screeupdating=False mi vada in conflitto?
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi maxmula » 08/06/05 23:30

L'orario non è dei migliori e la mia mente è un pochino obnubilata, però...
Io proverei (non so se si può fare ma forse sì) a creare una macro nella cartella personale di excel (quindi non associata ad un singolo foglio) ed a farla partire utilizzando qualcosa tipo AutoOpen (vedi nell'help di VBA). Questa macro dovrebbe poi aprire il uo foglio, in cui l'evento Workbook_Open lancia la macro che vuoi.

Questo alle 00:28: se poi mi viene in mente qualcosa di + preciso ti faccio un post.
Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi feno » 09/06/05 08:12

scusa, io ti leggo di mattino presto e sono ancora più obnubliato di te...
potresti spiegarti meglio?
io devo mettere una macro che fa aprire il file excel direttamente al lancio di excel? e se voglio aprire un altro xls? mi parte comunque la macro che mi apre quello lì?
scusa ma non ho ben capito.
comunque ricorda che se io sono loggato sul pc funziona tutto correttamente, direi quindi che non è un problema di macro...
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi maxmula » 09/06/05 13:12

In effetti credo di aver scritto una c@##@ta...

Bisognerebbe capire se all'apertura la macro è stata avviata, ha iniziato a lavorare e poi si è schiantata per qualche errore al momento misterioso, oppure non è stata nemmeno lanciata.
Riusciresti a fare in modo che all'avvio apra un file di testo in scrittura, mettendo qualche istruzione Print# in qualche punto strategico, così da avere una specie di tracciamento di quello che fa?


Per caso hai installato qualche programma tipo Internet Security o simili che potrebbe impedire l'avvio automatico di un programma?

Un workaround: lasciare il pc che usi come server sempre con un utente loggato. Al più lo lasci lì la notte protetto con Blocca Workstation...

ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi piercing » 09/06/05 13:37

credo che semplicemente la macro di excel vada in errore...

se la esegui direttamente cosa succede?

Visto che mi pare proprio un gioco di scatole cinesi... il bat che avvia excel che avvia la macro...

non trovi una soluzione tecnologicamente più corretta?

un semplice file vbs che contenga tutte le istruzioni? le differenze tra VBA e VBS sono davvero minime in fin dei conti...
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi feno » 09/06/05 14:09

Allora, devo fare tutta una serie di attività in autmatico,
1: devo collegarmi ad un sito ftp
2: prelevo un file .txt che cancello dal server ftp
3: una volta scaricato devo inserire i dati del file .txt in un file xls

4: (ma questo non sono riuscito ancora a farlo) devo mandare il file via mail ad un certo numero di indirizzi (smtp è bloccato sulla ns rete).

Tutto questo l'ho messo in un file bat con tutte le istruzioni per l'ftp etc, l'ultima riga del file bat contiene semplicemente il file excel da lanciare.
per la riga del ho già provato:
a) solo nomefile.xls visto che è nella stessa cartella del .bat
b) percorso/nomefile.xls
c) Start excel.exe percorso/nomefile.xls

La cosa strana è che se sono davanti al server funziona perfettamente, se lo lascio eseguire in modalità pianificata mi si blocca.

Confermo che il problema è sulla macro....però se la eseguo direttamente funziona.

Ciao
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

Postdi BianConiglio » 09/06/05 15:48

posta il bat e la macro :)
BianConiglio
Utente Senior
 
Post: 4710
Iscritto il: 26/12/01 01:00
Località: Varese / Lugano

Postdi pjfry » 09/06/05 16:43

ma questa macro usa risorse di rete? prova ad andare in operazioni pianificate, avanzate, account servizio AT, e mettici Administrator o cmq un power user invece di 'system' :-?
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi feno » 10/06/05 08:33

BAT

Codice: Seleziona tutto
CLS
@SET PROMPT=
@ECHO OFF
 

ECHO open xxx.xxx.xxx.xxx        >  D:\FTP\cartella\trasf.dat
type D:\FTP\cartella\user.dat   >> D:\FTP\cartella\trasf.dat
type D:\FTP\cartella\pwd.dat    >> D:\FTP\cartella\trasf.dat
ECHO prompt                     >> D:\FTP\cartella\trasf.dat
type D:\FTP\cartella\get.dat    >> D:\FTP\cartella\trasf.dat
type D:\FTP\cartella\close.dat  >> D:\FTP\cartella\trasf.dat

REM ******************************************************
REM *      SOTTOMISSIONE BATCH TRASFERIMENTO             *
REM ******************************************************
D:\FTP\cartella\ftp -s:D:\FTP\cartella\trasf.dat

REM ******************************************************
REM *      ELIMINAZIONE FILE TEMPORANEI                  *
REM ******************************************************

DEL D:\FTP\cartella\trasf.dat



@ECHO *************************************************************
@ECHO ***        IL TRASFERIMENTO E' STATO COMPLETATO           ***
@ECHO *************************************************************
REM PAUSE
SET PROMPT=$P$G
REM quit
start excel.exe d:\FTP\cartella\text.xls


MAACRO

Questa è la parte che lancia in automatico la macro nella sezione workbook:

Codice: Seleziona tutto
Private Sub Workbook_Open()
 SPEZZA
End Sub


Questo è il testo della macro file text.xls
Codice: Seleziona tutto
Sub SPEZZA()
'Application.ScreenUpdating = False
 Workbooks("text.xls").Activate
Dim righe As Variant
Dim ciccio
' qui cancello i valori che ci sono già su tutti e 4 i fogli
For q = 1 To 4
 foglio = "Z" & q
 Sheets(foglio).Select
 If Worksheets(foglio).UsedRange.Rows.Count > 1 Then
  Range(Cells(2, 1), Cells(Worksheets(foglio).UsedRange.Rows.Count, 6)).Select
  Selection.EntireRow.Delete
 End If
Next q

'apro il file scaricato
ieri = Date - 1
nomefile = "D:\FTP\cartella\filtra" & Format(ieri, "yyyymmdd") & ".txt"
'nomefile = "D:\FTP\cartella\filtra20050601.txt"
Open nomefile For Input As #1
'faccio il loop sulle righe del file
Do While Not EOF(1)
      Line Input #1, ciccio
     
      foglio = Mid(ciccio, 53, 2)
      oggi = Mid(ciccio, 95, 8)
      Sheets(foglio).Select
      righefoglio = (Worksheets(foglio).UsedRange.Rows.Count + 1)
      'metto i valori che ho letto nelle celle che mi interessano
      Cells(righefoglio, 2).Value = Mid(ciccio, 1, 12)
      Cells(righefoglio, 3).Value = Mid(ciccio, 13, 40)
      Cells(righefoglio, 4).Value = Mid(ciccio, 53, 2)
      Cells(righefoglio, 5).Value = Mid(ciccio, 55, 40)
      Cells(righefoglio, 6).Value = Mid(ciccio, 95, 8)
      Cells(righefoglio, 7).Value = Mid(ciccio, 103)
      'metto il progressivo anche nella riga di intestazione
      Cells(righefoglio, 1).Value = (Cells(1, 30).Value + 1)
      Cells(1, 30).Value = Cells(righefoglio, 1).Value
Loop
Close #1
Application.SheetsInNewWorkbook = 1
inifile = oggi & ".xls"
Set NewBook = Workbooks().Add
fName = "D:\FTP\cartellla\" & inifile
NewBook.SaveAs Filename:=fName


For q = 4 To 1 Step -1
 Workbooks("text.xls").Activate
 foglio = "Z" & q
 Sheets(foglio).Select
 Sheets(foglio).Copy Before:=Workbooks(Workbooks.Count).Sheets(1)
Next q
Workbooks(Workbooks.Count).Activate
    Application.DisplayAlerts = False
    Sheets("Foglio1").Delete
    Sheets("Z4").Activate
    Cells(1, 30).Delete
    Cells(1, 1).Activate
    Sheets("Z3").Activate
    Cells(1, 30).Delete
    Cells(1, 1).Activate
    Sheets("Z2").Activate
    Cells(1, 30).Delete
    Cells(1, 1).Activate
    Sheets("Z1").Activate
    Cells(1, 30).Delete
    Cells(1, 1).Activate

   
Application.DisplayAlerts = True
ActiveWorkbook.Save
Workbooks("text.xls").Activate
ActiveWorkbook.Save
Application.Quit
'Application.ScreenUpdating = True


End Sub
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy

forse ho trovato

Postdi feno » 22/06/05 11:34

Forse ho risolto...

Ho aggiunto un flag nell'operazione pianificata del server che dice di riattivare il computer quando esegue l'operazione.
Cià

F@no
feno
Utente Senior
 
Post: 268
Iscritto il: 29/05/02 08:36
Località: Somewhere in Italy


Torna a Software Windows


Topic correlati a "esecuzione automatica file excel su server":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti