Condividi:        

excel aprire una casella di testo con un clic

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

excel aprire una casella di testo con un clic

Postdi scacco al re » 25/05/15 06:48

Ho questo quesito da porvi e per sipegarlo meglio faccio un esempio:
ho un file excel dove ho un elenco di canzoni e vorrei, cliccando sulla cella del titolo della canzone, che si apra un box con il contenuto del testo della canzone. (i testi delle canzoni sono salvati in file separati e possono avere l'estensione txt oppure quella di word.)
Grazie per le risposte.
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Sponsor
 

Re: excel aprire una casella di testo con un clic

Postdi alfrimpa » 25/05/15 14:10

Ciao Scacco al re

Il mio vuole essere solo un suggerimento: ma non fai prima ad inserire un collegamento ipertestuale (su ogni titolo di canzone) che punti al relativo file dei testi?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 25/05/15 15:14

era l'idea di partenza, ma con il collegamento ipertestuale mi apre anche il programma word con tutti i comandi, o il programma blocco note se è un file txt. io vorrei solo che si aprisse una finestra di testo non modificabile.
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 25/05/15 22:58

Dovresti convertire i file word in txt
se sono tanti possiamo creare una macro che li converte una tantum
poi
Copia questa macro nel Vba del foglio (non nel modulo) dove hai l'elenco che ho supposto sia in colonna "A" altrimenti cambia il riferimento
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "A1:A" & UR  '<<<<< cambiare la lettera colonna in cui si trova l'elenco
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
LeggiTxt
End If
End Sub


In un modulo invece inserirai questa macro
Codice: Seleziona tutto
Public Riga As Integer
Sub LeggiTxt()
Perc = "C:\Temp\"  '<<<<< cambiare il percorso della cartella contenente i file txt
FileT = Range("A" & Riga).Value  '<<<<<<<<<< cambiare la lettera della colonna elenco canzoni
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
MsgBox Testo
End Sub


Questo sistema utilizza un msgbox di Excel che prevede massimo 1024 caratteri e dovrebbe essere sufficiente per il testo di una canzone altrimenti dobbiamo optare per un altro "visualizzatore".

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 25/05/15 23:37

Ho implementato la macro con la conversione nel caso in cui dovesse trovare un file di word
quindi sostituisci l'intera macro del modulo con questa
Codice: Seleziona tutto
Public Riga As Integer
Sub LeggiTxt()
Perc = "C:\Temp\"
FileT = Range("A" & Riga).Value
Esten = Mid(FileT, InStrRev(FileT, ".") + 1, 4)
If Esten <> "txt" And Esten <> "doc" And Esten <> "docx" Then
    MsgBox "File sconosciuto"
    Exit Sub
End If
If Esten <> "txt" Then
Const wdFormatText As Long = 2
Dim oApp As Object
    Set oApp = CreateObject("Word.Application")
    oApp.Visible = False
         FTesto = Mid(FileT, 1, InStrRev(FileT, ".") - 1)
    oApp.Documents.Open Filename:=Perc & FileT
    oApp.ActiveDocument.SaveAs Filename:=Perc & FTesto & ".txt", FileFormat:=wdFormatText, Encoding:=850, LineEnding:=wdCRLF
    oApp.Application.Quit
Set oApp = Nothing
FileT = FTesto & ".txt"
Range("A" & Riga).Value = FileT
End If
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
Close
MsgBox Testo
End Sub


Man mano che selezionerai un nome di file word sarà rinominato anche questo in txt nell'elenco voci
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 26/05/15 05:27

Grazie Flash30005 non mi resta che provare, appena riesco a rittagliarmi un paio d'ore per me.
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 26/05/15 18:29

ho fatto quanto segue:
ho aperto il file excel (uso excel13) e con alt+F11 ho aperto vba
cliccando due volte su foglio1 ho copiato la prima macro
facendo inserisci modulo ho copiato la seconda macro
ho lasciato come colonna di riferimento la A
ho inserito come percorso E:\canzoni\testi\
il nome del file di prova è "Prova di testo.txt" e ho provveduto a inserire nella cella A2 "prova di testo"
ecco l'errore che mi rimanda:
errore di runtime 1004
metodo 'range' dell'oggetto '_Global' non riuscito
cliccando su debug si illumina di giallo la riga
FileT = Range("A" & Riga).Value '<<<<<<<<<< cambiare la lettera della colonna elenco canzoni
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 26/05/15 22:42

Nella cella devi inserire il nome del file compresa l'estensione
perché la macro "riconosce" se il file è un .txt o .doc o docx dall'estensione che ha quel nome
se l'estensione manca va errore

Se si ferma, comunque in quella riga codice penso che non abbia messo in testa al modulo la variabile Riga come Public
Codice: Seleziona tutto
Public Riga As Integer  '<<<<<<<< questa riga deve essere all'inizio del modulo che contiene la macro LeggiTxt
Sub LeggiTxt()
Perc = "C:\Temp\"
....


Evidentemente non hai selezionato tutta la macro postata
e non hai usato il comando
Codice: Seleziona tutto
che si trova sopra ogni finestra con codice postato con il Tag Code


Prova e fai sapere

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 27/05/15 17:17

in vba nel foglio ho inserito questo
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "A1:A" & UR  '<<<<< cambiare la lettera colonna in cui si trova l'elenco
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
LeggiTxt
End If
End Sub

in vba nel modulo ho inserito questo
Codice: Seleziona tutto
Public Riga As Integer
Sub LeggiTxt()
Perc = "E:\canzoni\TESTI\"  '<<<<< cambiare il percorso della cartella contenente i file txt"
FileT = Range("A" & Riga).Value  '<<<<<<<<<< cambiare la lettera della colonna elenco canzoni
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
MsgBox Testo
End Sub

nella cartella e:\canzoni\testi ho creato un file di testo con estensione txt contenente alcune righe di testo
nella cella A2 ho scritto il nome del file senza estensione txt
nella cella A3 ho scritto il nome del file con estensione txt
cliccando indifferentemente sulla cella A2 e A3 l'errore è sempre lo stesso.
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Anthony47 » 27/05/15 23:10

Flash, non ho capito dove viene compilata la variabile "Riga"
Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 28/05/15 00:55

Devo aver copiato la macro prova dove non era menzionata la variabile Riga che consiste nell'aggiungere appunto una riga codice nella macro del foglio
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UR = Range("A" & Rows.Count).End(xlUp).Row
CheckArea = "A1:A" & UR
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
    Riga = Target.Row  '<<<<< aggiungere questa riga qui
LeggiTxt
End If
End Sub


L'estensione del file deve esserci sia se è txt o doc

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 28/05/15 05:36

Adesso funziona bene e ringrazio flash per la sua competenza e Anthony per aver capico cosa mancava
ora volevo chiedere due migliorie:
1) siccome i testi nella loro cartella di competenza saranno tutti con estensione txt, fare in modo che nella colonna A scriva solo il titolo e in automatico la macro inserirà l'estensione.
2) se non c'è corrispondenza nel nome tra il titolo che scrivo nella colonna A e il file di testo, mi venga fuori il messaggio "ATTENZIONE!!! testo della canzone non trovato" (magari in colore rosso)
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 28/05/15 08:45

La macro risulterebbe semplificata e potrebbe essere questa (sostituire solo quella nel modulo)
Codice: Seleziona tutto
Sub LeggiTxt()
Perc = "C:\Temp\"
FTesto = Range("A" & Riga).Value
Esten = ".txt"
If Dir$(Perc & FileT & Esten) = "" Then
    MsgBox "ATTENZIONE!!! testo della canzone non trovato", vbCritical
    Range("A" & Riga).Font.Color = -16776961
    Exit Sub
End If
FileT = FTesto & Esten
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
Close
MsgBox Testo
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 29/05/15 09:36

con l'ultima macro che mi hai postato,
qualunque cosa clicco (sulla colonna A)
mi restituisce nella msgbox "attenzione!!! testo della canzone non trovato"
sia se c'è o non c'è il file txt.
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Anthony47 » 29/05/15 18:48

Ho come l' impressione che invece di If Dir$(Perc & FileT & Esten) = "" Then si dovrebbe usare
If Dir$(Perc & FTesto & Esten) = "" Then
Una prova veloce non dovrebbe essere distruttiva, ma se non funziona e' meglio aspettare Flash.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 29/05/15 20:25

Funziona, grazie Anthony...
l'appetito vien mangiando... e fare in modo che se la cella della colonna A è vuota la macro restituisca ii messaggio nel msgbox "non hai inserito nessun titolo"
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Anthony47 » 29/05/15 22:52

Prova modificando Riga = Target.Row '<<<<< aggiungere questa riga qui (nella Private Sub Worksheet_SelectionChange) in
Codice: Seleziona tutto
If Target.value <> "" then
    Riga = Target.Row
Else
    Msgbox("Manca Titolo")
    Exit Sub
End If
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 31/05/15 02:06

Non capisco come mai a me funzionava, forse perché avevo ancora qualche nome con estensione
comunque ho riveduto e corretto la macro implementandola con il messaggio di avviso in caso di celle vuote (non sapevo che l'elenco avesse dei buchi perché se l'elenco arriva alla riga 100 e clicchi nella cella 101 non dà alcun errore.
Comunque, ho aggiunto il ripristino del font colore nero nel caso avessi provveduto ad inserire fisicamente, nella cartella, il file della canzone mancante.
Codice: Seleziona tutto
Sub LeggiTxt()
Perc = "C:\Temp\"
FTesto = Range("A" & Riga).Value
If FTesto = "" Then
    MsgBox "Manca titolo canzone"
    Exit Sub
End If
Esten = ".txt"
FileT = FTesto & Esten
If Dir$(Perc & FileT) = "" Then
    MsgBox "ATTENZIONE!!! testo della canzone non trovato", vbCritical
    Range("A" & Riga).Font.Color = -16776961
    Exit Sub
Else
Range("A" & Riga).Font.Color = 0
End If
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
Close
MsgBox Testo
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel aprire una casella di testo con un clic

Postdi scacco al re » 31/05/15 10:46

Ottimo lavoro. funziona proprio come volevo.
per il passo finale cioè cliccare sulla cella immediatamente a destra per ascoltare il brano (avendo una cartella mp3 e il titolo del brano corrisponde al titolo mp3) devo aprire un nuovo topic?
scacco al re
scacco al re
Utente Senior
 
Post: 524
Iscritto il: 10/05/02 19:18
Località: Sestri Levante

Re: excel aprire una casella di testo con un clic

Postdi Flash30005 » 01/06/15 02:42

A questo punto avrei pensato di inserire una UserForm (nome Userform1)
Nella quale inserirai un TextBox (nome TextBox1) con appropriate dimensioni in lunghezza e nelle proprietà metterai Multiline True.
Poi Menu Strumenti -> Controlli Aggiuntivi (in fondo a quelli disponibili) trovi il componente Windows Media Player e lo selezioni
a questo punto lo avrai disponibile nella Casella degli strumenti e lo inserisci nella Userform1 il nome sarà WindowsMediaPlayer1
Ora nel modulo inserirai questa macro al posto della precedente
Codice: Seleziona tutto
Public Riga As Integer
Sub LeggiTxt()
Perc = "C:\Temp\"     '<<<< Percorso File testi canzoni
PercM = "C:\Users\NomeUtente\Music\"  '<<<<Percorso File Mp3
FTesto = Range("A" & Riga).Value
If FTesto = "" Then
    MsgBox "Manca titolo canzone"
    Exit Sub
End If
Esten = ".txt"
FileT = FTesto & Esten
If Dir$(Perc & FileT) = "" Then
    MsgBox "ATTENZIONE!!! Testo della canzone non trovato", vbCritical
    Range("A" & Riga).Font.Color = -16776961
    Exit Sub
Else
Range("A" & Riga).Font.Color = 0
End If
Path = Perc & FileT
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile(Path)
Testo = oFile.ReadAll
oFile.Close
Close
UserForm1.TextBox1.Text = Testo
UserForm1.WindowsMediaPlayer1.URL = PercM & FTesto & ".mp3"
UserForm1.Show
'MsgBox Testo
End Sub


Devi solo sostituire i percorsi dei file Testo e Mp3 con quelli a tua disposizione.

Quando cliccherai su un nome della canzone (in colonna A) si aprirà la userform con testo e player che farà ascoltare la canzone selezionata

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-


Torna a Applicazioni Office Windows


Topic correlati a "excel aprire una casella di testo con un clic":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti