Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 22-06-2007, 13:38   #1
~ZeRO sTrEsS~
Senior Member
 
L'Avatar di ~ZeRO sTrEsS~
 
Iscritto dal: Nov 2002
Città: Mission world: Napoles, Milan, Madrid, Paris, London, Now AMSTERDAM!!!!! yahoooo!!! Next stop: California, Tnx TNS-NIPO!!
Messaggi: 2150
[Visual basic] codice per excel chi mi aiuta?

ciao ragazzi, mi servirebbe un piacere enorme, Devo creare un bottone in un file excel che quando premuto crea dei file di Testo in determinate con il contenuto di 4 fogli di un file excell, una specie di repot in file txt, sinceramente non mi importa la formattazione mi serve solo portare quello che c'é in questi 4 fogli in un file txt. ho trovato questo codice sul sito della microsoft per fare ció che voglio, ma funziona solo per un foglio...

http://support.microsoft.com/kb/635038/it

Quote:


Sub file_testo()
Dim start As Range
Dim fine As Range

n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE")
n = n & ".txt"
Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8)
Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8)
colonna_inizio = Range(start.Address).Column
riga_inizio = Range(start.Address).Row
colonna_fine = Range(fine.Address).Column
riga_fine = Range(fine.Address).Row
Open n For Output As #1
For y = riga_inizio To riga_fine
For i = colonna_inizio To colonna_fine
valore = Cells(y, i).Value
If i = colonna_fine Then
valore = valore & Chr(13)
Else
valore = valore & ";"
End If
Print #1, valore;
Next i
Next y
Close #1
End Sub

Il separatore dei campi, puo` essere personalizzato con la seguente riga di
codice:

valore = valore & ";"

al posto del ";", si puo` inserire qualunque altro separatore.

Qualcuno mi saprebbe aiutare? Altra cosa che mi chiedevo é se era possibile implementare anche del codice che dovrebbe creare un file a parte con una piccola parte del primo foglio solo nel momento in cui la casella X é piena...

non so se mi sono spiegato caso mai non capite cerco di spiegarmi meglio!

Grazie a tutti in anticipo!
__________________
La libertá sopratutto di parola é un lusso che non ci si puo' permettere in italia, per la strada come su internet.
~ZeRO sTrEsS~ è offline  
Old 23-06-2007, 12:35   #2
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Devi eseguire il codice da te postato per ogni foglio che vuoi salvare.
Ad esempio se vuoi salvare tutti i fogli di una cartella di lavoro in un unico file puoi fare così:
Codice:
Sub file_testo()
    Dim start As Range
    Dim fine As Range
    Dim Foglio  As Worksheet
    Dim strNomeDefault As String
    Dim strIntestazione As String
    Dim f As Integer
    
    'Imposta il nome di default del file
    strNomeDefault = "Prova"
    
    n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE", , strNomeDefault)
    n = n & ".txt"

    f = FreeFile
    Open n For Output As #f

    ' Per ogni foglio nella cartella di lavoro corrente...
    For Each Foglio In ActiveWorkbook.Worksheets
    
        ' Attiva il foglio
        Foglio.Activate
        
        Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8, Title:=Foglio.Name)
        Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8, Title:=Foglio.Name)
        colonna_inizio = Range(start.Address).Column
        riga_inizio = Range(start.Address).Row
        colonna_fine = Range(fine.Address).Column
        riga_fine = Range(fine.Address).Row
        
        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & "]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
        
    Next
    
    Close #f
End Sub
Per quanto riguarda la seconda domanda puoi crearti una nuova funzione:
Codice:
Sub file_testo_parte()
    Dim Foglio As Worksheet
    Dim iRiga As Integer
    Dim iCol As Integer
    Dim strIntestazione As String
    Dim f As Integer
    
    ' Foglio contenente la cella da controllare
    Set Foglio = ActiveWorkbook.Worksheets("foglio1")
    
    ' Coordinate della cella da controllare
    iRiga = 5
    iCol = 3
    
    ' Se la cella non è vuota...
    If (Foglio.Cells(iRiga, iCol).Value <> "") Then
        ' ...salva parte del foglio
        
        'Imposta il nome del file
        n = "File_parte" & ".txt"
    
        ' Coordinate della cella inizio
        colonna_inizio = 1
        riga_inizio = 1
        ' Coordinate della cella fine
        colonna_fine = 3
        riga_fine = 3
        
        f = FreeFile
        Open n For Output As #f

        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & " Parziale ]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
            
        Close #f
    End If
      
End Sub
Ovviamente il tutto può essere ottimizzato in base alle tue esigenze.
Se hai problemi chiedi pure.
uReverendo è offline  
Old 24-06-2007, 15:52   #3
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Ho ricevuto il tuo pvt e ho fatto un po' di modifiche.
Codice:
Sub SalvaComeTXT()
    Dim Interv As Range
    Dim strIntestazione As String
    Dim strFile As String
    Dim strFileParte As String
    
    ' Visualizza la finestra di dialogo "Salva" e recupera il nome del file
    strFile = DlgSalva
    
    If (strFile <> "") Then
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:D6 del Foglio1
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio1").Range("A1:D6")
        strIntestazione = "[Foglio1]" & vbCrLf
        SalvaRange strFile, False, strIntestazione, Interv
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:F20 del Foglio2
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio2").Range("A1:F20")
        strIntestazione = "[Foglio2]" & vbCrLf
        SalvaRange strFile, True, strIntestazione, Interv
        ' -------------------------------------------------------
        '
        '
        ' ... Continua per tutti i fogli che vuoi salvare ...
        '
        '
        ' Se la cella "A5" del Foglio1 ha del testo...
        If (Worksheets("Foglio1").Range("A5").Value <> "") Then
            ' ...salva parte del foglio nel file strFileParte
            
            ' Toglie l'estensione al nome del file
            strFileParte = Left(strFile, Len(strFile) - 4)
            ' Aggiunge un suffisso e rimette l'estensione
            strFileParte = strFileParte & "_parte.txt"
            
            ' Es. Se strFile = "c:\salvataggio.txt" allora
            ' strFileParte sarà uguale a "c:\salvataggio_parte.txt"
            
            Set Interv = Worksheets("Foglio1").Range("A1:B2")
            strIntestazione = "[Foglio1_parte]" & vbCrLf
            SalvaRange strFileParte, False, strIntestazione, Interv
            ' -------------------------------------------------------
        End If
    End If
    
End Sub

Private Function DlgSalva()
    Dim dlg As New CommonDialog
    Dim strFile As String
    
    ' Imposta le opzioni della finestra di dialogo
    dlg.DialogTitle = "Salva fogli come file di testo"
    dlg.Filter = "File di testo (*.txt)|*.txt"
    
    ' Visualizza la finestra di dialogo
    dlg.ShowSave
    
    ' Recupera il file selezionato
    strFile = dlg.Filename
    
    ' Se non si è premuto "annulla"...
    If (strFile <> "") Then
        ' ...restituisce il nome e il percorso del file
        DlgSalva = strFile
        Exit Function
    End If
    
    ' Se si è premuto "annulla" restituisce una stringa vuota
    DlgSalva = ""
End Function

Private Sub SalvaRange(ByVal strFile As String, ByVal blnAggiungi As Boolean, ByVal strIntestazione As String, ByRef Interv As Range)
    ' -------------------------------------------------------------------
    '  DESCRIZIONE: Salva su file un intervallo di celle.
    ' -------------------------------------------------------------------
    '  INPUT:
    ' -------------------------------------------------------------------
    '  strFile ->   Nome del file in cui salvare i dati.
    '               Se il file non esiste verrà creato.
    '               Se esiste verrà sovrascritto o i dati verranno
    '               aggiunti a seconda del valore di blnAggiungi.
    '
    '  blnAggiungi->Se TRUE: il dati verranno aggiunti al file
    '               Se FALSE: il file verrà sovrascritto
    '
    '  strIntestazione -> Intestazione da stampare nel file.
    '                     Se non si vuole intestazione passare ""
    '
    '  Interv    -> Intervallo da stampare
    ' -------------------------------------------------------------------
    
    Dim f As Integer
    Dim r As Integer
    Dim c As Integer
    
    On Error GoTo Errore
    
    ' Recupera un numero di file libero
    f = FreeFile
    
    If (blnAggiungi) Then
        ' Apre il file aggiungendo i dati alla fine
        Open strFile For Append As #f
    Else
        ' Se il file esiste...
        If (Dir(strFile) <> "") Then
            ' ...chiede conferma prima di sovrascriverlo
            Risp = MsgBox("Il file " & strFile & " già esiste lo vuoi sovrascrivere?", vbYesNo + vbQuestion, "Attenzione!")
            If (Risp = vbNo) Then
                ' Non si vuole sovrascrivere il file: ESCI!!!
                Exit Sub
            End If
        End If

        ' Apre il file sovrascriverlo
        Open strFile For Output As #f
    End If
    
    If (strIntestazione <> "") Then
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
    End If
    
    ' Scrive il valore di ogni cella nel file
    For r = 1 To Interv.Rows.Count
        For c = 1 To Interv.Columns.Count
            valore = Interv.Cells(r, c).Value
            If c = Interv.Columns.Count Then
                valore = valore & vbCrLf
            Else
                valore = valore & ";"
            End If
            Print #f, valore;
        Next
    Next
    
    ' Chiude il file
    Close #f
    
    Exit Sub
    
' Gestisce eventuali errori
Errore:
    Dim strMsg As String
    strMsg = "Si è verificato un errore durante il salvataggio del file." & vbCrLf & "Errore Numero: " & Err.Number & vbCrLf & "Descrizione: " & Err.Description
    MsgBox strMsg, vbCritical
End Sub
Per farlo funzionare correttamente devi aggiungere un riferimento a "Microsoft Common Dialog Control 6.0" (da VBA: menu Strumenti\Riferimenti e seleziona la voce che ti ho detto. Se non la trovi, clicca su sfoglia e seleziona il file COMDLG32.OCX nella cartella system32)
uReverendo è offline  
 Discussione Chiusa


ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
NVIDIA pronta a garantire fino a 250 mil...
Framework ha risolto una delle criticit&...
Apple rilascia macOS Tahoe 26.6: oltre 1...
Amodei: Anthropic non ha mai chiesto il ...
3 portatili stanno facendo parlare di s&...
OpenAI blocca le imitazioni d'autore men...
GTA 6: codici download con restrizioni r...
Babylon Facilities: un finanziamento da ...
Amazon scatena i prezzi: smartphone, TV,...
AMD Radeon RX 9050 è realtà...
Caro carburanti, il Governo taglia il pr...
Smart TV Hisense 55'' 4K a 305€: HDR10+,...
Truffa crypto da 1,8 milioni di dollari:...
Ubisoft e Xbox: alcuni giochi acquistati...
Dreame H14 Pro crolla a 249€: scopa elet...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v