Allegare 20k immagini in locale
Inviato: mercoledì 26 giugno 2024, 15:20
Ciao ragazzi
Intanto grazie di esistere. Non sapete quante volte mi è venuto in soccorso il forum nei mesi passati anche senza essere registrato.
Sono Davo e da qualche mese ho iniziato a lavorare in modo un po' più attivo su Calc.
Oggi però sto sbattendo contro un muro di gomma. L'inserimento automatizzato di oltre 22mila png in formato 180x180 su di un Calc.
Ho cercato nel forum ma non ho trovato nulla che mi portasse a risolvere. Questo soprattutto a causa del mio totale analfabetismo sulla questione
Le immagini sono presenti in una cartella del mio desktop e sono rinominate con un semplice ID numerico, ID presente anche nella colonna A del foglio.
E' la prima volta che mi avvicino alle macro. Fino alla settimana scorsa neanche conoscevo l'esistenza.
Ho cercato di capirci qualcosa anche grazie a chatgpt, col quale, dopo numerosi tentativi,ho cercato di tirare giù un comando verosimile.
In questo momento il comando eseguito non sembra trovare errori di scrittura.
Non sembra, perchè in realtà dopo pochissimo mi arriva la notifica di lavoro concluso senza che nessuna immagine sia stata caricata.
Il fine ultimo di tutto questo? Creare un database che possa essere pubblicato nel mio sito internet.
Il foglio infatti è stato tutto strutturato per essere inserito direttamente su BASE (di cui sconosco anche lì l'ABC.....ma ho visto che funziona ahahah)
Vi allego prima le informazioni necessarie e successivamente il comando utilizzato
Macro - " InserisciImmagini "
Foglio - " db_face "
Pagina (unica nel foglio) - " DB "
Colonna con ID - " A " (ovviamente parte dalla cella 2 e si conclude con la cella 22039)
Estensione e formato immagini - " .png " e " 180x180 "
Percorso cartella immagini - " C:\Users\davok\Desktop\Miniface "
Questo il comando utilizzato
Sub InserisciImmagini()
On Error GoTo ErrorHandler
Dim oSheet As Object
Dim oCellRange As Object
Dim oCell As Object
Dim oDrawPage As Object
Dim oShape As Object
Dim sFolderPath As String
Dim sFileName As String
Dim iRow As Integer
' Imposta il nome del foglio
On Error Resume Next
Set oSheet = ThisComponent.Sheets.getByName("DB")
On Error GoTo ErrorHandler
If oSheet Is Nothing Then
MsgBox "Foglio 'DB' non trovato!"
Exit Sub
End If
' Ottieni il range delle celle da A2 a A22039
oCellRange = oSheet.getCellRangeByName("A2:A22039")
sFolderPath = "file:///C:/Users/davok/Desktop/Miniface/" ' Percorso della cartella delle immagini
' Ottieni il foglio di disegno
oDrawPage = oSheet.DrawPage
' Ciclo attraverso le celle specificate
For iRow = 0 To oCellRange.Rows.getCount() - 1
oCell = oCellRange.getCellByPosition(0, iRow)
sFileName = sFolderPath & oCell.getString() & ".png" ' Nome del file immagine
' Verifica se il file esiste
If FileExists(sFileName) Then
' Crea un nuovo oggetto immagine e imposta le proprietà
oShape = CreateGraphicObject(oDrawPage, sFileName)
' Imposta le dimensioni dell'immagine
oShape.setSize(1800, 1800)
' Posizione dell'immagine rispetto alla cella
oShape.setPosition(oCell.AbsolutePosition.X + 10000, oCell.AbsolutePosition.Y)
' Aggiungi l'oggetto grafico alla pagina di disegno
oDrawPage.add(oShape)
' Aggiorna il documento
oShape.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
oDrawPage.Add(oShape)
End If
Next iRow
MsgBox "Inserimento immagini completato!"
Exit Sub
ErrorHandler:
MsgBox "Errore durante l'accesso al foglio 'DB': " & Err.Description
Exit Sub
End Sub
Mi scuso se ho trascurato qualche passaggio e se sono stato prolisso.
Fustigatemi a dovere
Grazie
Intanto grazie di esistere. Non sapete quante volte mi è venuto in soccorso il forum nei mesi passati anche senza essere registrato.
Sono Davo e da qualche mese ho iniziato a lavorare in modo un po' più attivo su Calc.
Oggi però sto sbattendo contro un muro di gomma. L'inserimento automatizzato di oltre 22mila png in formato 180x180 su di un Calc.
Ho cercato nel forum ma non ho trovato nulla che mi portasse a risolvere. Questo soprattutto a causa del mio totale analfabetismo sulla questione
Le immagini sono presenti in una cartella del mio desktop e sono rinominate con un semplice ID numerico, ID presente anche nella colonna A del foglio.
E' la prima volta che mi avvicino alle macro. Fino alla settimana scorsa neanche conoscevo l'esistenza.
Ho cercato di capirci qualcosa anche grazie a chatgpt, col quale, dopo numerosi tentativi,ho cercato di tirare giù un comando verosimile.
In questo momento il comando eseguito non sembra trovare errori di scrittura.
Non sembra, perchè in realtà dopo pochissimo mi arriva la notifica di lavoro concluso senza che nessuna immagine sia stata caricata.
Il fine ultimo di tutto questo? Creare un database che possa essere pubblicato nel mio sito internet.
Il foglio infatti è stato tutto strutturato per essere inserito direttamente su BASE (di cui sconosco anche lì l'ABC.....ma ho visto che funziona ahahah)
Vi allego prima le informazioni necessarie e successivamente il comando utilizzato
Macro - " InserisciImmagini "
Foglio - " db_face "
Pagina (unica nel foglio) - " DB "
Colonna con ID - " A " (ovviamente parte dalla cella 2 e si conclude con la cella 22039)
Estensione e formato immagini - " .png " e " 180x180 "
Percorso cartella immagini - " C:\Users\davok\Desktop\Miniface "
Questo il comando utilizzato
Sub InserisciImmagini()
On Error GoTo ErrorHandler
Dim oSheet As Object
Dim oCellRange As Object
Dim oCell As Object
Dim oDrawPage As Object
Dim oShape As Object
Dim sFolderPath As String
Dim sFileName As String
Dim iRow As Integer
' Imposta il nome del foglio
On Error Resume Next
Set oSheet = ThisComponent.Sheets.getByName("DB")
On Error GoTo ErrorHandler
If oSheet Is Nothing Then
MsgBox "Foglio 'DB' non trovato!"
Exit Sub
End If
' Ottieni il range delle celle da A2 a A22039
oCellRange = oSheet.getCellRangeByName("A2:A22039")
sFolderPath = "file:///C:/Users/davok/Desktop/Miniface/" ' Percorso della cartella delle immagini
' Ottieni il foglio di disegno
oDrawPage = oSheet.DrawPage
' Ciclo attraverso le celle specificate
For iRow = 0 To oCellRange.Rows.getCount() - 1
oCell = oCellRange.getCellByPosition(0, iRow)
sFileName = sFolderPath & oCell.getString() & ".png" ' Nome del file immagine
' Verifica se il file esiste
If FileExists(sFileName) Then
' Crea un nuovo oggetto immagine e imposta le proprietà
oShape = CreateGraphicObject(oDrawPage, sFileName)
' Imposta le dimensioni dell'immagine
oShape.setSize(1800, 1800)
' Posizione dell'immagine rispetto alla cella
oShape.setPosition(oCell.AbsolutePosition.X + 10000, oCell.AbsolutePosition.Y)
' Aggiungi l'oggetto grafico alla pagina di disegno
oDrawPage.add(oShape)
' Aggiorna il documento
oShape.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
oDrawPage.Add(oShape)
End If
Next iRow
MsgBox "Inserimento immagini completato!"
Exit Sub
ErrorHandler:
MsgBox "Errore durante l'accesso al foglio 'DB': " & Err.Description
Exit Sub
End Sub
Mi scuso se ho trascurato qualche passaggio e se sono stato prolisso.
Fustigatemi a dovere
Grazie