2016-06-29 7 views
0

複数のシート(名前付きタブ)をエクスポートしてテキストファイルを区切るマクロを構築しようとしています。元の.xlsmファイルには数式が組み込まれているため、名前付きワークシートの各値を個々のテキストファイルに貼り付けようとしています。以下のスクリプトは動作しますが、メインのExcelファイルは.xlsxとアクティブワークシートとしてのみ保存されます。複数のシートから別々のテキストファイルに値をコピー&ペーストするためのExcelマクロ

私はペースト/すべてのワークシートをコピーしようとしていますが、私のスクリプトが動作しない:

Sub SaveSheetsAsTxt() 
' 
' SaveSheetsAsTxt Macro 
' 
Dim ws As Worksheet 

Application.DisplayAlerts = False 

'save as XLSX 
    ActiveWorkbook.SaveAs Filename:="V:\tech\dd\FUND_HOLDINGS.xlsx", _ 
     FileFormat:=xlNormal, Password:="", WriteResPassword:="", _ 
     ReadOnlyRecommended:=False, CreateBackup:=False 

MyPath = ThisWorkbook.Path 

For Each ws In ThisWorkbook.Sheets 
ActiveSheet.Cells.Copy 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats 
ActiveWorkbook.SaveAs Filename:="V:\tech\dd" & "\" & ActiveSheet.Name & ".txt", _ 
FileFormat:=xlText, CreateBackup:=False 
ActiveWorkbook.Close SaveChanges:=False 

Next ws 

End Sub 

は、任意の助けを事前にありがとうございます!

+0

'のためのループ内の最初の行としてws.activate'を追加します。 –

答えて

0

そこには何か問題があります。

  • 閉じる文はの.xlsxする.xlsmから保存するときに正しく動作するように変更する必要の.xlsxワークブックの
  • ループ内で呼び出されるFileFormatは必要ありません。 xlOpenXMLWorkbook
  • Scottが指摘したように、繰り返し実行するたびに保存しようとしているワークシートをアクティブにする必要があります。

    Sub SaveSheetsAsTxt() 
    
    Dim ws As Worksheet 
    Application.DisplayAlerts = False 
    
    'save as XLSX 
    Worksheets.Copy 
    ActiveWorkbook.SaveAs Filename:="V:\tech\dd\FUND_HOLDINGS.xlsx", _ 
    FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _ 
    ReadOnlyRecommended:=False, CreateBackup:=False 
    ' Close the newly created xlsx file 
    ActiveWorkbook.Close 
    
    'loop through the worksheets 
    For Each ws In ThisWorkbook.Sheets 
        ws.Activate 
        ActiveSheet.Cells.Copy 
        ActiveSheet.Cells.PasteSpecial Paste:=xlPasteValues 
        ActiveSheet.Cells.PasteSpecial Paste:=xlPasteFormats 
        ActiveWorkbook.SaveAs Filename:="V:\tech\dd" & "\" & ActiveSheet.Name & ".txt", _ 
        FileFormat:=xlText, CreateBackup:=False 
    Next ws 
    
    'Close out the workbook now 
    ActiveWorkbook.Close 
    End Sub 
    
+0

OPが以前に保存している理由は、すべての変更を行っているコピーを保存しているからです。これは、ブックからすべての数式を削除しないようにするためです。彼らはコピーを作成し、そのコピーですべての数式を削除して値を残します。これは反復してtxtファイルとして保存するコピーです。 –

+0

Scott。申し訳ありませんが、私はあなたの2番目のコメントを削除したと思う...私は自分自身を削除しようとしていた。 – ghg565

+0

いいえ、私はそれを削除した、私は自分のロジックが正しいことを再確認したいと思った。 –

関連する問題