Office 2003 दस्तावेज़ों को कनवर्ट / एन्क्रिप्ट करें


0

हमारे पास पुराने Excel 2003 स्प्रेडशीट की एक बड़ी संख्या (अधिकतम) है जिसे हमें एन्क्रिप्ट करने की आवश्यकता है। Excel 2003 में एन्क्रिप्शन पुराना है, इसलिए हम फ़ाइलों को 2010 प्रारूप में अपडेट करना चाहते हैं और फिर उन्हें एन्क्रिप्ट करना चाहते हैं। मैं ऐसा करने के लिए एक स्क्रिप्ट या प्रोग्राम खोजने की कोशिश कर रहा हूं, लेकिन मैं नहीं कर पाया हूं। केवल एक चीज जो मुझे मिली है वह है माइक्रोसॉफ्ट माइग्रेशन प्लानिंग टूलकिट जिसमें ओएफसी टूल शामिल है। समस्या यह है कि यह 2007 प्रारूप में परिवर्तित हो जाता है, जबकि यह संगत है, यह 2010 प्रारूप के समान नहीं है। 2007 प्रारूप एन्क्रिप्शन सीबीसी विधि के बजाय कमजोर ईबीसी ब्लॉक चेनिंग का उपयोग करता है जो 2010 का उपयोग करता है। इसके अलावा, 2010 में 2007 की एक फ़ाइल खोलने पर तब फ़ाइल को सहेजने के लिए कहा जाएगा, भले ही कोई बदलाव न किया जाए (संभवतः इसे नए प्रारूप में अपडेट करने के लिए)।


1
ऐसा लगता है कि यह कार्य एक छोटा प्रोग्राम लिखने के लिए एक अच्छा कारण है जो एक्सेल COM लाइब्रेरी का उपयोग करता है, जिससे आप किसी फ़ाइल को खोल / सहेज सकते हैं, प्रत्येक फ़ाइल के माध्यम से बस लूप करने के लिए पर्याप्त सरल होगा।
Ramhound

जैसे रामहाउंड ने कहा, आप एक छोटा प्रोग्राम बना सकते हैं .. या आप वीबीए में एक भी लिख सकते हैं जो एक बाहरी एक्सेल फाइल को खोलेगा, उसे बचाएगा, और जो भी आपकी आवश्यकता होगी, वह कर सकता है। वीबीए में जो आप पूछ रहे हैं, उसे करने के लिए कई उदाहरण हैं, तो एक बार देख लें और अगर आपको कोई समस्या है तो मैं उसे वापस करने में मदद करूंगा।
Eric F

धन्यवाद। मुझे एक पॉवर्सशेल स्क्रिप्ट मिली, जो आप दोनों को बताती है। एक बात पर मैंने गौर किया है कि ओपनिंग / सेविंग ओपनिंग / कन्वर्सेशन जैसी नहीं है। एक्सेल में भी, अगर मैं एक ओपन / सेव के रूप में करता हूं और फिर एक ही डॉक्यूमेंट के लिए ओपन / कन्वर्ट करता हूं तो मुझे दो अलग-अलग आउटपुट मिलेंगे (डॉक्स को अनजिप किया और एक्सएमएल फाइल की तुलना में)। क्या COM में कन्वर्ट ऑपरेशन किया जा सकता है?
Caynadian

जवाबों:


1

मैं आपको सुझाव दूंगा कि आप स्क्रिप्टिंग भाषाओं में देखें AutoIt । स्क्रिप्टिंग भाषा उन कार्यों को दोहराएगी जो एक उपयोगकर्ता माउस और कीबोर्ड इनपुट सहित ले जाएगा। आप एक सूची या स्थान के आधार पर फ़ाइलों को परिवर्तित करने के लिए इसे स्थापित करने में सक्षम होंगे।


दिलचस्प। मुझे इसका प्रयास करना होगा और देखना होगा कि प्रदर्शन कैसा है। मेरे पास करने के लिए शाब्दिक रूप से स्प्रैडशीट है।
Caynadian

0

मैंने रूपांतरण को स्वचालित करने के लिए Powershell का उपयोग करके समाप्त किया। यहाँ मेरी दिलचस्पी के लिए स्क्रिप्ट है:

function ConvertTo-XLSX {

<#
.SYNOPSIS
XLS files within a provided path are recursively enumerated and convert to XLSX files.
.DESCRIPTION
XLS files within a provided path are recursively enumerated and convert to XLSX files.
The original XLS files remain intact, a new XLSX file will be created.
.PARAMETER Path
This parameter takes the input of the path where the XLS files are located.
.PARAMETER Visible
Using the parameter will show you how Excel does the work. Not using the parameter will enable Excel 
to accomplish its tasks in the background.
Note: By not using this parameter you will be able to convert some XLS files which have corruptions 
in them, when using the parameter and therefor the Excel GUI will give you an error.
.PARAMETER ToFolder
This parameter enables you to provide a location where the file is saved. When this parameter is 
not used, the file will be saved as an XLS file in the same location as where the 
original XLS file is located.
.PARAMETER Password
If specified, the password will be used to encrypt the converted Excel document.  Passwords are case
sensitive and must be less than 15 characters long.
.PARAMETER Force
If specified, then files that have already been converted (there is already a file with the same name
but a .xlsx extension in the output directory) will be re-converted.
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012'
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012' -Visible
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012' -ToFolder 'D:\Data\2012XLSX'
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012' -Visible -ToFolder 'D:\Data\2012XLSX'
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012' -Password 'SecureP@ssword'
.EXAMPLE
ConvertTo-XLSX -Path 'D:\Data\2012' -Force
#>
    [cmdletbinding()]
    param (
        [parameter(mandatory=$true)][string]$Path,
        [parameter(mandatory=$false)][switch]$Visible,
        [parameter(mandatory=$false)][string]$ToFolder,
        [parameter(mandatory=$false)][string]$Password,
        [parameter(mandatory=$false)][switch]$Force
    )
    begin {
        Add-Type -AssemblyName Microsoft.Office.Interop.Excel
        $xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault
        Write-Verbose 'Opening Excel COM object.'
        $Excel = New-Object -ComObject excel.application
        if ($Visible -eq $true) {
          $Excel.visible = $true
        } else {
          $Excel.visible = $false
          $Excel.DisplayAlerts = $false
          $Excel.ScreenUpdating = $false
          $Excel.UserControl = $false
          $Excel.Interactive = $false
        }
        $filetype = "*xls"
    } process {
        if (Test-Path -Path $Path) {
            Get-ChildItem -Path $Path -Include '*.xls' -recurse | ForEach-Object {
                Write-Verbose "Processing $($_.Basename)"
                if ($ToFolder -ne '') {
                    $FilePath = Join-Path $ToFolder $_.BaseName
                    $FilePath += ".xlsx"
                } else {
                    $FilePath = ($_.fullname).substring(0, ($_.FullName).lastindexOf("."))
                    $FilePath += ".xlsx"
                }
                if (!(Test-Path $FilePath) -Or $Force) {
                  Write-Verbose "Opening $($_.Basename)"
                  $WorkBook = $Excel.workbooks.open($_.fullname)
                  Write-Verbose "Saving $($_.Basename) to $FilePath with password $Password"
                  $WorkBook.saveas($FilePath, $xlFixedFormat, $Password)
                  Write-Verbose "Closing $($_.Basename)"
                  $WorkBook.close()
                } else {
                  Write-Verbose "$($_.Basename) already converted."
                }
            }
        } else {
            return 'No path provided or access has been denied.'
        }
    } end {
        Write-Verbose 'Closing Excel'
        $Excel.Quit()
        $Excel = $null
        [gc]::collect()
        [gc]::WaitForPendingFinalizers()
    }
}

यह जेफ वाउटर्स की एक स्क्रिप्ट पर आधारित था जो यहां पाया गया: http://jeffwouters.nl/index.php/2013/10/powershell-function-to-convert-xls-files-to-xlsx/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.