dopo diverse prove sono arrivato a questo risultato finale,
lo posto in modo che se vedi degli errori tu possa segnalarmeli
(poi magari può servire a qualcuno):
Nel mio documento excel ci sono 2 fogli:
"dati" (foglio dati - che conterrà i dati prelevati da dati.txt)
"grafico" (grafico - che si aggiorna automaticamente all'apertura prendendo i dati da "dati")
nel ThisWorkbook del documento ho inserito il seguente codice:
codice:
Private Sub Workbook_Open()
If ControllaPresenzaDati() = True Then
PrendiDati
AggiornaGrafico
Else
avviso = MsgBox("il file dati.txt NON E' PRESENTE nella stessa cartella di GRAFICO.xsl" & Chr(13) & Chr(13) & "Il grafico visualizzato è relativo ai dati salvati in precedenza", vbOKOnly + vbExclamation)
End If
End Sub
Function ControllaPresenzaDati()
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path
.SearchSubFolders = False
.Filename = "dati.txt"
ControllaPresenzaDati = .Execute() > 0
End With
End Function
Sub PrendiDati()
'
' PrendiDati Macro
' Macro registrata il 08/01/2003 da William Verdolini
Sheets("dati").Select
With Selection.QueryTable
.Connection = "TEXT;" & ThisWorkbook.Path & "\dati.txt"
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
With Selection.QueryTable
.Name = "dati"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
End With
End Sub
Sub AggiornaGrafico()
'
' AggiornaGrafico Macro
' Macro registrata il 07/01/2003 da William Verdolini
'
colonna = 1
Do While Not TypeName(Sheets("dati").Cells(1, colonna).Value) = "Empty"
Intervallo = "A1:" & Sheets("dati").Cells(1, colonna).Address(False, False)
colonna = colonna + 1
Loop
Charts("Grafico").ChartType = xlLineMarkersStacked
Charts("Grafico").SetSourceData Source:=Sheets("dati").Range(Intervallo), PlotBy:= _
xlRows
' ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Grafico"
With Charts("Grafico")
.HasTitle = True
.ChartTitle.Characters.Text = "Distanza Minima stimata ad ogni iterazione dell 'algoritmo di decodifica"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).HasTitle = True
End With
Sheets("Grafico").Activate
End Sub
Questo è quanto.
Immagino che sarebbe meglio poter eliminare l'aggiornamento
automatico del grafico (tanto lo aggiorno poi io all'apertura),
ma per far questo dovrei creare una nuova QueryTable, ma per il
momento non l'ho fatto (penso che non sia complicato...però)
grazie Sergio,
sei stato indispensabile,
ora so recuperarmi le macro e ho incominciato
a scriverne qualcuna mia. Devo dire che Excel si è rivelato
un programma affascinante!!
grazie ancora,
ciauz