• ベストアンサー

エクセルのシートをテキストで保存したい

A2からB5までデータが入っている時に、 このデータのみ(A1~B1まで除く)をテキスト ファイル(スペース区切り)(.prnファイル) で保存しようとすれば どのようにすればよろしいのでしょうか。 SaveAsを使うとデータの取り出し方法がわからず、 Writeを使うのはCSVファイルにする方法しか分からない 状態です。 よろしくお願いします。

  • fuyu
  • お礼率69% (145/210)

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

補足について、 >最後の行までとんでいってしまいます。 変数Output_Sheetは定義されているでしょうか。定義してなければOn Error GoToで最後まで飛びます。 また、スペース区切りのファイルにならないと思いますので手を加えてみました。On Error GoToの処理も少し手を加えています。 後半部分です。   For lRowNumb = 5 To lLastRowNumb     For nColumNumb = 1 To 24       sData = Cells(lRowNumb, nColumNumb).Value       If nColumNumb < 24 Then '修正         Print #nFrn, sData & " "; '修正       Else '修正         Print #nFrn, sData '修正       End If '修正     Next nColumNumb   Next lRowNumb   Close #nFrn   Exit Sub '追加 HandleError: エラー処理?

fuyu
質問者

お礼

おかげさまで解決いたしました。 本当に、回答ありがとうございました。

その他の回答 (2)

  • i-touch
  • ベストアンサー率40% (170/415)
回答No.2

こんなかんじですか。 項目(A,B,..)が増えたら、そちらもFor-Nextで、変数で変えるといいです。 Cells(縦,横)で指定します。 がんばってくださいね。 '----------------------- Sub saveCells() '■ PRNファイル出力 ----- Dim iFrn As Integer Dim loFF As Long Dim strFname As String Dim strA As String Dim strB As String '保存ファイル名(任意) strFname = "SaveCells.prn" 'データのあるシート名を指定する Worksheets("Sheet1").Activate '保存ファイルを開く iFrn = FreeFile(0) Open strFname For Output As #iFrn '1項目ごとに処理をする For loFF = 2 To 5 'セルのデータを文字列でもらう strA = Cells(loFF, 1).Value strB = Cells(loFF, 2).Value 'ファイルに出力(半角空白区切り) Print #iFrn, strA & " " & strB Next loFF Close #iFrn MsgBox "保存終了しました" & vbCrLf & " File: " & strFname End Sub '---------------- では

fuyu
質問者

補足

回答ありがとうございます。 一度教えていただいた方法でやってみました。 コードは以下になります。 (実際はA5~X5以下をテキストファイルにしようとして います。) On Error GoTo HandleError Dim nFrn As Integer Dim lRowNumb As Long Dim sFilename As String Dim sData As String Dim lLastRowNumb As Long Dim nColumNumb As Integer '最終入力ライン抽出 Worksheets(Output_Sheet).Cells(65536, 1).End(xlUp).Select lLastRowNumb = Selection.Row sFilename = "C:\Usr\output.prn" Worksheets(Output_Sheet).Activate nFrn = FreeFile(0) Open sFilename For Output As #nFrn For lRowNumb = 5 To lLastRowNumb For nColumNumb = 1 To 24 sData = Cells(lRowNumb, nColumNumb).Value Print #nFrn, sData & " " Next nColumNumb Next lRowNumb Close #nFrn HandleError: なぜか、最終入力ラインを抽出する Worksheets(Output_Sheet).Cells(65536, 1).End(xlUp).Select から次の行を読まずに最後の行までとんでいってしまいます。 何かコードに問題があるのでしょうか?

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

1.セル範囲A2~B5までを「新しいブック・単一のシート」にコピーする。   (1)シート名を右クリック。   (2)「移動またはコピー」で移動先ブック名を「新しいブック」にする。 2.ブック(シート)を「名前を付けて保存する」。   (1)タイプを「PRN」とする。   (2)ファイル名をダブルコーテーションで囲めば拡張子も指定可能。 上記をマクロで記録してみて、コードを読んでください。 > データの取り出し方法がわからず DIM nFile as integer OPEN パス+ファイル名 FOR INPUT AS #nFile のようなコマンドを書けば読めます。 ヘルプの「OPEN」でも見てください。 > Writeを使うのはCSVファイルにする方法しか分からない Print #xxをみてください。

fuyu
質問者

補足

教えていただいた方法でやってみました。 On Error GoTo HandleError Sheets(Output_Sheet).Select Sheets(Output_Sheet).Copy ActiveWorkbook.Rows("1:4").Select ActiveWorkbook.Selection.Delete Shift:=xlUp ActiveWorkbook.SaveAs Filename:="C:\USR\output.prn", FileFormat:= _ xlTextPrinter, CreateBackup:=False HandleError: 現在は、一旦シートをコピーして 不必要な行(1行目~4行目)を削除してそれを保存する、 という方法にしております。 しかし、なぜかActiveWorkbook.Rows("1:4").Selectの後に、 Deleteする行(ActiveWorkbook.Selection.Delete Shift:=xlUp)から下 をとばしてプログラムの最後までいってしまいます。 コードに何か問題でもあるのでしょうか?

関連するQ&A

  • エクセルのテキスト形式(””区切り)保存の仕方

    弥生会計の仕訳日記帳にインポートするため、エクセルデータを テキスト形式で保存しようとしています。 エクセルでデータを作成し、ファイル形式を選択して保存しようと するのですがその中にはテキスト形式は「タブ区切り」と「スペース区切り」 しかありません。 弥生のインポート対応形式はテキストの””区切りです。 (エクセル)20080101 0 0 2000 売掛金 (テキスト)"20080101""0""0""2000""売掛金" というようにしたいのですが。 CSV(タブ区切り)で保存してやってみましたが、インポート できませんでした。 いくつか検索したところ、形式を選択して保存すれば…という 回答が見つかったのですが、どれも上記のような状態になりません。 ちなみにエクセルのバージョンは2003です。 よろしくお願いします。

  • ExcelVBAでテキスト保存

    ExcelVBAを使って、ワークシートをテキストファイルに保存しようとしています。 CSV形式で保存するときは、   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".csv", _     FileFormat:=xlCSV, CreateBackup:=False でtest.csvに保存できますが、 単純にテキストファイルとして保存したいときに   Sheets("test").Activate   ActiveSheet.SaveAs Filename:=ActiveSheet.Name & ".txt", _     FileFormat:=xlText, CreateBackup:=False としても、実行時に下記のエラーになってしまいます。   実行時エラー '1004'   アプリケーション定義またはオブジェクト定義のエラーです。 どうしたらよいのでしょうか? また、CSVで保存した時も開いているファイルがtest.csvに変わってしまいますが、できれば、開いているファイルは元のファイルのままでシートだけを保存するにはSaveAsメソッドではなく、他のメソッドを使うのでしょうか? (hogehoge.xlsのtestシートを保存してもhogehoge.xlsが開いたままにしたい) 以上、宜しくお願いします。

  • PRNファイルをエクセルEXCELで関連付けしたいのですが

    prnファイル(スペース区切りテキストデータ)をエクセルに読み込むのは、エクセルを起動後にテキストデータウィザードでできますが、エクスプローラーで当該prnファイルをダブルクリックして(例えばABC.prnをダブルクリック)、起動、データ読み込みするにはどのようにしたらよいのでしょうか。単にエクセルに関連付けすると、最初の列に長いテキストとして読み込まれてしまいます。 よろしくお願い致します。

  • Excelで指定範囲だけを(.prn)保存する

    Excelで(.prn)(スペース区切りテキストファイル)保存する際、指定範囲だけを保存する方法はないでしょうか?。もちろん、余計な範囲を削除する方法では、他のセル参照などマクロが狂ってくるので、そんな単純な方法ではありません。この機能はロータス123にあった機能で、Excelで色々と試しているのですが、どなたかご存じでしたらご教示をよろしくお願いします。

  • エクセル VBA 保存したCSVファイルについて

    いつもお世話になっています。 早速ですが カンマ区切りのテキストファイルをカンマ区切りで読み込んだあと変更を加え ActiveWorkbook.SaveAs Filename:="Book2.csv", FileFormat :=xlCSV, CreateBackup:=False で保存したものを メモ帳などで開いた時に 不要な箇所にカンマの不要な箇所に沢山カンマが付いてしまいます。 M列まであるのでその分の空白もカンマ区切りで保存されてのだと思うのですが これを、不要な部分の空白を除いた形で保存する方法は無いでしょうか? どうぞよろしくお願いします

  • Excel97VBAで、カレントディレクトリを取得する方法

    Excel97のVBAで、ワークブックの保存ボタンを作成しています。 1.xlsというファイルを、一旦、1.prn(スペース区切りテキスト)でデスクトップに保存し、再度元のディレクトリの1.xlsに上書き保存する。というマクロを作っています。 SaveAsでFileFormatを変更するところまではわかったのですが、元のファイルに上書きする方法がわかりません。 一度、カレントディレクトリを取得して、同じ名前を付けて保存する、という方法になるのではないかと思いましたが、カレントディレクトリの取得方法がわかりません。 宜しくお願いします。

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?

  • エクセル テキスト形式の名称変更保存

    みなさまお世話になります 早速ですが、標記の件です csv形式になっているテキストファイル(拡張が異なりますset)をエクセルで カンマ区切りにて開いた後 保存しようとした場合 上書き保存であれば、拡張も元々の拡張子で保存されるのですが マクロを使用してファイル保存をしようとすると ActiveWorkbook.SaveAs Filename:=ActiveSheet.Name, FileFormat:=xlCSV, CreateBackup:=False 拡張子がCSVになってしまいます。 それを元々の拡張にて保存を行いたいのです。 またファイル名が長いので 変更をかけた後  シート名の一部を変更して保存したいためにActiveSheet.Nameを 使用しています どうぞよろしくお願いします。

  • エクセルのCSV(カンマ区切り)保存について教えてください

    次のようなEXCELデータをCSV(カンマ区切り)で保存した際に項目(カンマ)を2つ追加できるでしょうか? EXCEL  セルA1:AAA  セルB1:BBB  セルC1:  セルD1:CCC  セルE1:  セルF1: このデータをCSV保存してTEXTで確認すると、  AAA,BBB,,CCC となりますが、これを  AAA,BBB,,CCC,, としたいのですが、セルE1とセルF1がNULLのためカンマ区切りができません。半角スペースなどをいれるしかないのでしょうか? できればセルE1とセルF1には何も入力したくないのですが。良い方法がありましたら教えてください。

  • エクセルでテキストファイルを読みこむ際に...

    EXCEL97を利用しています。 テキストデータで半角スペースによってそろえられた表があります。 それをエクセルで読みこんで加工したい場合に、 エクセルのテキストファイルウィザードの 「スペースでそろえられた固定長の.....」で読みこむのですが、 区切り位置を指定する時に、半角できれいにそろえられているはずの 表が それぞれの行でずれてしまい、どこで区切り位置を指定すればよいか 分からない状態です。 (今はテキストデータをワードパットで読みこみ、1行目の 区切り位置に「,」などの印を手入力し、エクセルでの読み込み時に 目安にして読みこんでいます。)  よくMSゴシックPなどを使った時に、スペースが連続すると フォントの文字間が自動で詰まってしまうのと同じような ことだと思うのですが.... スペースで揃えられたテキストファイルを、エクセルの テキストウィザードできれいに表示する方法はありませんか?