タブ区切りに変換する必要がある約150個の.xlsファイルと.xlsxファイルがあります。オートマターを使ってみましたが、1つずつしかできませんでした。ただし、それぞれを個別に開くよりも間違いなく高速です。私はスクリプトの知識がほとんどないので、これをできるだけ苦痛なく行う方法をいただければ幸いです。
(私はあなたがMACを使用していることを知っているので、私の答えはあなたにとってそれほど役に立たないかもしれません。しかし、Windowsユーザーにとっては多分。ところで、MACとLinux用のPowershellオープンソースの再実装があります [〜#〜 ] pash [〜#〜] )
このコンバーターをダウンロード Powershellスクリプト 実行します。それで全部です。 :)
フォルダを要求し、このフォルダとそのサブフォルダ内のすべてのXLSX、XLS、XLSBを繰り返し処理します。次に、PowershellはExcelの非表示インスタンスを作成し、Excelの内部Open
およびSave as
コマンドを使用して、すべてのファイルを目的の形式に変換します。 OPが要求するため、現在タブ区切りのTXTファイル。ファイル名とフォルダー構造は保持されます。
たとえば、CSVやTXTを選択すると、複数のワークシートでも別々のファイルに保存されます。通常、Excelの名前を付けて保存ダイアログを使用すると、最初のシートのみが保存されます
別の形式が必要な場合は、ソースコードの-4158
を自分の値に変更してください。以下は、 [〜#〜] msdn [〜#〜] から取得したいくつかの一般的な形式です。
Open XML Workbook XLSX 51 xlOpenXMLWorkbook Excel 2003 XLS 56 xlExcel8 Excel12 XLSB 50 xlExcel12 現在のプラットフォームテキストCSV-4158 xlCurrentPlatformText HTML形式HTML44 xlHtml UnicodeテキストTXT 42 xlUnicodeText DBF4 DBF 11 xlDBF4
$object = New-Object -comObject Shell.Application
$folder = $object.BrowseForFolder(0, 'Select the folder', 0)
if (!$folder) {exit}
$Excel = New-Object -comObject Excel.Application
$Excel.Visible = $false
$Excel.DisplayAlerts = $false
foreach ($file in Get-ChildItem -literalPath $folder.self.Path*.xls? -recurse) {
$workbook = $Excel.Workbooks.Open($file.Fullname)
foreach ($worksheet in $workbook.Sheets) {
$worksheet.activate()
$newpath = $File.DirectoryName +"\"+ $file.BaseName + " - " + $worksheet.name + ".csv"
$workbook.SaveAs($newpath,-4158 ,$null,$null)
}
$workbook.Close()
}
$Excel.quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook)
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
ブックの1つを開き、developer
タブに移動し、Visual Basicをクリックして、このコードをmodule
として入力します。
PATH
をすべてのワークブックがあるフォルダーに変更します。 2番目のPATH
は、テキストファイルを保存する場所です。
注タブ区切りのテキストは複数のワークシートをサポートしていないため、各ファイルの最初のworksheet
のみを保存できます。
Sub openandsave()
Dim lCount As Long
Dim wbResults As Workbook
Dim wbCodeBook As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
On Error Resume Next
Set wbCodeBook = ThisWorkbook
With Application.FileSearch
.NewSearch
.LookIn = "PATH"
.FileType = msoFileTypeExcelWorkbooks
If .Execute > 0 Then
For lCount = 1 To .FoundFiles.Count
Set wbResults = Workbooks.Open(Filename:=.FoundFiles(lCount), UpdateLinks:=0)
ActiveWorkbook.SaveAs Filename:="PATH" AND .Foundfiles(lcount) AND ".txt", FileFormat _
:=xlText, CreateBackup:=False
Next lCount
End If
End With
On Error GoTo 0
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
それが機能しない場合は、SaveAs Filename
を台無しにした可能性があります
スクリプト言語を使用して、Excelライブラリでそれらすべてを反復処理し、ある種の正規表現を実行して特定の文字をタブに変換することができます。ドラフトして後で投稿する場合があります。
これは、ドロップレットとして実装することを目的としたApplescript(つまり、大量のファイルをドラッグできるアプリ)です。
磨く余地はありますが、本質的な仕事が成し遂げられることを願っています。
property type_list : {"XLS6", "XLS7", "XLS8", "XLSX"}
property extension_list : {"xls", "xlsx"}
on open these_workbooks
repeat with k from 1 to the count of these_workbooks
set this_item to item k of these_workbooks
set the item_info to info for this_item
--this if statement tests to make sure the items you're converting are Excel spreadsheets and not folders or aliases
if (folder of the item_info is false) and (alias of the item_info is false) and ((the file type of the item_info is in the type_list) or the name extension of the item_info is in the extension_list) then
tell application "Finder" to open this_item
tell application "Microsoft Excel 2011"
--this just tacks on ".txt" to your file name
set workbookName to (name of active workbook & ".txt")
--save the current open workbook as a tab-delimited text file
tell active workbook to save workbook as filename workbookName file format text Mac file format
close active workbook saving no
end tell
end if
end repeat
end open
on run
display dialog "Drop Excel files onto this icon."
end run