アプリ版:「スタンプのみでお礼する」機能のリリースについて

A2からB5までデータが入っている時に、
このデータのみ(A1~B1まで除く)をテキスト
ファイル(スペース区切り)(.prnファイル)
で保存しようとすれば
どのようにすればよろしいのでしょうか。

SaveAsを使うとデータの取り出し方法がわからず、
Writeを使うのはCSVファイルにする方法しか分からない
状態です。

よろしくお願いします。

A 回答 (3件)

1.セル範囲A2~B5までを「新しいブック・単一のシート」にコピーする。


  (1)シート名を右クリック。
  (2)「移動またはコピー」で移動先ブック名を「新しいブック」にする。
2.ブック(シート)を「名前を付けて保存する」。
  (1)タイプを「PRN」とする。
  (2)ファイル名をダブルコーテーションで囲めば拡張子も指定可能。

上記をマクロで記録してみて、コードを読んでください。

> データの取り出し方法がわからず

DIM nFile as integer
OPEN パス+ファイル名 FOR INPUT AS #nFile
のようなコマンドを書けば読めます。

ヘルプの「OPEN」でも見てください。

> Writeを使うのはCSVファイルにする方法しか分からない
Print #xxをみてください。

この回答への補足

教えていただいた方法でやってみました。

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)から下
をとばしてプログラムの最後までいってしまいます。
コードに何か問題でもあるのでしょうか?

補足日時:2001/10/05 13:56
    • good
    • 0

こんなかんじですか。



項目(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
'----------------
では

この回答への補足

回答ありがとうございます。

一度教えていただいた方法でやってみました。

コードは以下になります。
(実際は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
から次の行を読まずに最後の行までとんでいってしまいます。

何かコードに問題があるのでしょうか?

補足日時:2001/10/05 13:16
    • good
    • 0

補足について、


>最後の行までとんでいってしまいます。

変数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:
エラー処理?
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/07 18:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!