unire file tiff con access 2013 64bit

Anonimo
2016-01-10T16:10:53+00:00

Buongiorno a tutti eccoomi qui per chiedere un consiglio di come procedere per un problema che si è verificato a causa del passaggio daun office 10 a 32bit ad un office 13 64bit,  il codice che ho inserito sotto mi unisce tanti tiff in uno solo senza probelmi nel 32bit, ma si blocca  col 64bit , l'errore come si può vedere è nel componente modi, dalle mie ricerche risulta che non esiste una versione per 64 bit, quindi anche installando la 32bit logicamente non funziona, ora vi chiedo che strada posso intraprendere per superare questo ostacolo, ne ho provate diverse ma sono bloccato.

ringrazio in anticipo chiunque sappia darmi qualche dritta sull'argomento..

saluti

Tanino

Public Sub MergeTiffImages()

    Dim TIFPath As String

    Dim Tiffin   As String

    Dim TIFSource As Object 'MODI.Document

    Dim TIFDest   As Object 'MODI.Document

    Dim TIFImage  As Object 'MODI.Image

     Dim strFiletiff As String

Set TIFSource = CreateObject("MODI.Document")  <-----------------------ERRORE

    Set TIFDest = CreateObject("MODI.Document")

    Set TIFImage = CreateObject("MODI.Document")

    TIFDest.Create

    Dim filename As String

    strFiletiff = "d:\archivio2" & [Forms]![salva_con_nome2]![Testo1] & ".tiff" & ""

       filename = [Forms]![salva_con_nome2]![Testo1] & ".tiff"

    TIFPath = "d:\archivio2\tiffs"   '<--- MODIFICARE"

    Tiffin = Dir(TIFPath & "*.TIFF")

    If Len(Tiffin) Then

    Do While Len(Tiffin)

      TIFSource.Create TIFPath & Tiffin

      For Each TIFImage In TIFSource.Images

        TIFDest.Images.Add TIFImage, Nothing

        Debug.Print Tiffin

        With TIFImage

          Debug.Print "TIFImage:"; .PixelWidth; "x"; .PixelHeight

        End With

        With TIFDest.Images

          With .item(.Count - 1)

            Debug.Print "TIFDest :"; .PixelWidth; "x"; .PixelHeight

          End With

        End With

        Debug.Print

      Next TIFImage

      TIFSource.Close

      Tiffin = Dir()

    Loop

    If TIFDest.Images.Count Then

      TIFDest.SaveAs "d:\archivio2" & filename & "" '

    End If

    Else

      MsgBox "Nessun file TIFF nella cartella " & TIFPath _

           , vbOKOnly Or vbExclamation _

           , "MergeTiff"

    End If

    Set TIFImage = Nothing

    Set TIFSource = Nothing

    Set TIFDest = Nothing

    DoCmd.RunSQL "insert into scantemp2 (immagine) values ('" & strFiletiff & "')"

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-01-14T13:12:51+00:00

ciao Tanino,

visto che disponi di adobe Acrobat.

ho eseguito questo test giusto per provare...

maschera con command button cmdFirstFile e textBox txtFirstFile che permette di selezionare il primo file Tiff e visualizzarlo nella textbox.

altro command button cmdRestOfFiles che permette di selezionare gli altri tiff da accorpare al primo.

listbox lstRestOfFiles che permette di mostrare il file Tiff da accorpare al primo popolare in seguito all'evento click.

evento click per la scelta del primo file:

Private Sub cmdFirstFile_Click()

Me.txtFirstFile = cmdFileDialog(0)

End Sub

evento click per la scelta di tutti gli altri files:

Private Sub cmdRestOfFiles_Click()

Dim strFiles As String

Dim aFiles() As String

strFiles = cmdFileDialog(-1)

Me.lstRestOfFiles.RowSource = strFiles

aFiles = Split(strFiles, ";")

mergePDFfiles2 Me.txtFirstFile, aFiles()

End Sub

modulo standard che genera i pdf da ogni singolo tiff file e lo accopa in un unico file in PDF: Personalizza il path in cui vai a salvare i files i pdf generati  e quello ed il nome del file che contiene tutti i pdf accorpati.

dopo avere scelto gli altri files la routine mostra il file PDF JoinedTiff2.pdf con tutte le immagini accorpate.

Testato anche con A2010 64 bit tutto regolare.

Facci sapere.

ciao, Sandro.

Option Compare Database

Option Explicit

Private Const pdfJoinedPath As String = "C:\combine\pdf\JoinedTiff2.pdf"

Private Const pdfCovertedPath As String = "C:\combine\pdf"

Sub mergePDFfiles2(ByVal strFirstFile As String, _

                   ByRef strArray() As String)

On Error GoTo errorHanlder

    Dim i             As Integer

    Dim firstFile     As Object 'Acrobat.CAcroPDDoc

    Dim nFiles        As Object 'Acrobat.CAcroPDDoc

    Dim pdfFile       As String

    Dim numPages As Integer

    Set firstFile = CreateObject("AcroExch.PDDoc")

    Set nFiles = CreateObject("AcroExch.PDDoc")

    pdfFile = Tif2PDF(strFirstFile)

    DoEvents

    firstFile.Open pdfFile

    For i = 0 To UBound(strArray())

        pdfFile = Tif2PDF(strArray(i))

        nFiles.Open (pdfFile)

        numPages = firstFile.GetNumPages()

         firstFile.InsertPages numPages - 1, nFiles, _

                                      0, nFiles.GetNumPages(), True

          nFiles.Close

     Next

    firstFile.Save 1, pdfJoinedPath 'PDSaveFull

    firstFile.Close

        Application.FollowHyperlink pdfJoinedPath

ext_errorLoadAccountHandler:

    Set firstFile = Nothing

    Set nFiles = Nothing

    Exit Sub

errorHanlder:

   With Err

        MsgBox "ERR#" & .Number _

             & vbNewLine & .Description _

             , vbOKOnly Or vbCritical

      End With

      Resume ext_errorLoadAccountHandler

End Sub

Public Function cmdFileDialog(ByVal blnMultiselected As Boolean) As String

   Dim fDialog As Object

   Dim varFile As Variant

   Dim i       As Integer

    Set fDialog = Application.FileDialog(3)

    With fDialog

        .AllowMultiSelect = blnMultiselected

       .Title = "Select One or More Files"

       .Filters.Clear

       .Filters.Add "modelli di word", "*.tif"

      .InitialFileName = CurrentProject.Path & ""

       If .Show = True Then

        For i = 1 To .SelectedItems.Count

            varFile = varFile & ";" & .SelectedItems(i)

        Next

            cmdFileDialog = Mid$(CStr(varFile), 2)

       Else

          cmdFileDialog = vbNullString

       End If

    End With

End Function

Public Function Tif2PDF(ByVal strFirstFile As String) As String

Dim AcApp     As Object 'Acrobat.AcroApp

Dim TiffDoc   As Object 'Acrobat.AcroAVDoc

Dim PdfDoc    As Object 'Acrobat.AcroPDDoc

Dim justFile  As String

    Set AcApp = CreateObject("AcroExch.App")

    Set TiffDoc = CreateObject("AcroExch.AVDoc")

    Call TiffDoc.Open(strFirstFile, "")

    Set TiffDoc = AcApp.GetActiveDoc

    Set PdfDoc = TiffDoc.GetPDDoc

    justFile = justFileName(strFirstFile)

    PdfDoc.Save &H5, justFile

    PdfDoc.Close

    TiffDoc.Close True

    AcApp.Exit

    Tif2PDF = justFile

    Set PdfDoc = Nothing

    Set TiffDoc = Nothing

    Set AcApp = Nothing

End Function

Public Function justFileName(ByVal strFullPath As String) As String

     Dim s() As String

     s = Split(strFullPath, "")

     justFileName = pdfCovertedPath & Left$(s(UBound(s)), InStr(1, s(UBound(s)), ".") - 1) & ".pdf"

 End Function

La risposta è stata utile?

0 commenti Nessun commento

33 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-03-03T16:14:32+00:00

    ciao Tanino,

    per questo :

    nel codice del comando che uso per selzionare i file mi dice "prevista variabile routine e non preogetto"

    non è che per caso hai chiamato un modulo con lo stesso nome di una funzione...?

    Poi, la demo che ti ho messo a disposizione crea un pdf da N tiff senza problemi, l'ho testata prima di pubblicarla.

    Una cosa che potrebbe essere migliorata è nascondere l'instanza di acrobat in modo da non vedere quel fastidioso sfarfallio durante il merging.....ti dirò...forse potrebbe non essere nemmeno un problema perché ti rendi conto "visivamente" dell'azione di merging stessa...

    Facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-03-03T09:53:18+00:00

    Ciao Sandro sto avendo problemi i serve una mano, ti spiego:

    l'altro giorno quando ho inserito e sperimentato il codice sembrava ok invece mi ha accorpato un solo documento, oltretutto ora mi da errori che non riesco a capire bene.

    nel codice del comando che uso per selzionare i file mi dice "prevista variabile routine e non preogetto" evidenziando la parola 'cmdFileDialog' in entambi i comandi.

    in teoria non doveva funzionare da subito perchè?

    il modulo l'ho logicamente copiato in un modulo e il resto nei comandi come da te indicato.

    ti ringrazio in anticipo

    Tanino

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-28T23:11:49+00:00

    ciao Tanino,

    non ci dai molti dettagli  per quanto a :

    [...]

    mi è capitata una cosa penso curiosa, con la textbox mi dava errore invece usando un listbox anche per il singolo file funzionava benissimo...

    [...]

    prova a scaricare questa demo : http://1drv.ms/1XTKe6l taninoTiff.accdb.

    Apri la maschera 1 selezione il primo file  che visualizzerai nella textBox e gli altri file nella listbox.

    [...]

    ti ringrazio ancora

    un saluto

    Tanino

    [...]

    prego!

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-02-28T18:48:14+00:00

    Ciao Sandro anche se in ritardo dovuto a casini vari, ho sperimentato il tuo codice e funziona bene, magnifico ero bloccato su questa cosa del 64bit, grazie per il tuo indispensabile aiuto.

    giusto una cosa che volevo dirti, per quanto riguarda il primo passaggio cioè l'inserimento del primo file su textbox, mi è capitata una cosa penso curiosa, con la textbox mi dava errore invece usando un listbox anche per il singolo file funzionava benissimo...

    ti ringrazio ancora

    un saluto

    Tanino

    La risposta è stata utile?

    0 commenti Nessun commento