みなさま、こんにちは。

EXCELから改行コード付きの固定長テキストファイルは作れますか?

EXCELをテキストファイルに落としてエディタで開いて、必要なスペースやゼロを追加しているのですが、データ件数が多いと大変なので、もし方法があれば
どうか教えて下さいまし。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

できます。



保存する時のファイル種別を*.prnにして保存します。
    • good
    • 1
この回答へのお礼

ODCさん
できました、できました!
ありがとうございました。

お礼日時:2001/03/08 09:23

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELの文字列操作で文字数不足の分をスペースで補う方法

EXCELの文字データを取り出す際に以下のような操作を行いたいんですが、方法をご存知の方がいらっしゃいましたら教えていただけませんでしょうか。

既にデータの入力されているセルの文字数が、ある一定数に満たない場合は不足分を半角スペースで補う

【例】文字数を15と指定したとします
セルに入力されたデータ:山田_ 太郎
   ↓
求めたいデータ:山田_ 太郎_ _ _ _ _ _
(山田の後に半角スペースが1、太郎の後に半角スペースが6つ入っていると仮定してください)

※TEXT関数で数値の文字数不足分を0で埋めるということはできたのですが、TEXT関数は数値のみを対象としているようで・・・。
【例】12345 → 000000000012345

よろしくお願いいたします。

Aベストアンサー

A1に「山田 太郎」が入っている場合、
 =LEFTB(A1&REPT(" ",15),15)
と式を立てればOKです。

LEFBは、左側から指定バイト分(半角1バイト・全角2バイト)を抜き出す関数。
REPTは、所定の文字をくり返す関数です。

QCSVファイルを固定長のテキストファイルに変換する。

CSVファイルを固定長のテキストファイルに変換したいのですがEXCEL、ACCESSで変換してもノートパッドで見ると長さが換わっていたりします。
何か良い方法があったら教えてください。

Aベストアンサー

下記を参考にやって見てください。
エクセルのVBAで、下記を標準モジュールに貼りつけて、実行すれば出来ます。
項目数(フィールド数)が増えた場合どこを増やすか
判りますね。String * 7は桁長を指定してください。
文字列は左詰、数字は右詰にしてます。
MsgBoxの行は確認に使いました。
メモ帳で3項目の簡単な例を作り、テストして見てください。私がしたサンプル例
1,2,a
34,43,ccc
42,3,xcd
’---
Sub test02()
Dim x As String * 7
Dim y As String * 7
Dim z As String * 7
Open "c:\My documents\test3.csv" For Input As #1
Open "c:\My documents\test3.prn" For Output As #2
'-----
While EOF(1) = False
Line Input #1, s
a = Split(s, ",")
RSet x = a(0)
RSet y = a(1)
LSet z = a(2)
'MsgBox "=" & z & "="
u = x & y & z
' MsgBox "=" & u & "="
Print #2, u
Wend
'-----
Close #1
Close #2
End Sub

下記を参考にやって見てください。
エクセルのVBAで、下記を標準モジュールに貼りつけて、実行すれば出来ます。
項目数(フィールド数)が増えた場合どこを増やすか
判りますね。String * 7は桁長を指定してください。
文字列は左詰、数字は右詰にしてます。
MsgBoxの行は確認に使いました。
メモ帳で3項目の簡単な例を作り、テストして見てください。私がしたサンプル例
1,2,a
34,43,ccc
42,3,xcd
’---
Sub test02()
Dim x As String * 7
Dim y As String * 7
Dim z As String * 7
Open "c:\M...続きを読む

QVBAでEXCELから固定長のテキストデータにしたい

VBAにてEXCELに展開されたデータを固定長のテキストデータに落としたい。

EXCEL側の用件
(1)シート1にボタンを用意して、ボタンをクリックしたらテキストファイルを作成する処理にしたい。
(2)シート2にデータが展開されている。
列は10個程度、行は場合によりけり(MAX65536?)

固定長にする箇所とかはわかるのですが、ボタンクリックしたらシート2を見て、セル(もしくはrange)をどのように取得すればいいのかVBAがよくわからないのです。

Aベストアンサー

参考URLを見てください。
サンプルもあります

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html

QEXCELまたはACCESSのファイルを固定長に変換する方法

EXCELまたはACCESSのファイルを固定長に変換する機能を教えてください。できれば、マクロ等を使わないで簡単に行ないたいと考えています。

Aベストアンサー

[Excel]
名前を付けて保存で、
ファイルの種類を「テキスト(スペース区切り)」にします。

[Access]
エクスポートで、
ファイルの種類を「テキスト」にします。
テキスト エクスポート ウィザードで固定長を選択。
設定ボタンで各フィールドの開始位置と長さを設定。
ファイルに出力。

エクセルの場合、日本語が混じるとうまくいかない場合があります。

QExcelシートを固定長のテキストファイルに変換

エクセル2000で、シートをテキストファイル
(prnファイル)に落とすVBAを作っています。

現在、以下のようなコード(OK Webで教えていただいた
方法)で、スペース区切りでA5からC10までをテキスト
ファイルに落とす、というような方法を使っています。

ここから、A列は100バイト、B列は150バイト、
C列は50バイトというように列の長さを固定して
テキストファイルに落とすようにしたいのですが、
どのようにすればよろしいのでしょうか?


以下はプログラムで使っている変数名です。
・sMyFilenameは出力するファイル名
・lRowNumbは5行目から10行目までを指定。
・nColumNumbはA列からX列までを指定。


nFrn = FreeFile(0)
Open sMyFilename For Output As #nFrn 

For lRowNumb = 5 To 10
For nColumNumb = 1 To 3

sData = .Cells(lRowNumb, nColumNumb).Value

If nColumNumb < 3 Then
Print #nFrn, sData & " ";
Else
Print #nFrn, sData
End If

Next nColumNumb
Next lRowNumb

Close #nFrn

エクセル2000で、シートをテキストファイル
(prnファイル)に落とすVBAを作っています。

現在、以下のようなコード(OK Webで教えていただいた
方法)で、スペース区切りでA5からC10までをテキスト
ファイルに落とす、というような方法を使っています。

ここから、A列は100バイト、B列は150バイト、
C列は50バイトというように列の長さを固定して
テキストファイルに落とすようにしたいのですが、
どのようにすればよろしいのでしょうか?


以下はプログラムで使っている変数名です。
・sMyFile...続きを読む

Aベストアンサー

サンプルを作りました。

ファイル名などを固定にしていますが、そこら辺は読み替えてください。
それと毎回読んだデータをすぐに書きに行っていたので、一行ずつ書き込むように変更しています。
大きな違いはfixStrというオリジナル関数を追加しています。
この関数で、固定長の文字列として取得できます。

VBでは文字長に関係するときは
  StrConv("文字列", vbFromUnicode)
というのをよく使います。


Sub Main()
  Dim nFrn    As Long
  Dim lRowNumb  As Long
  Dim nColumNumb As Long
  Dim sData    As String
  
  Dim FixByte   As Variant '固定長バイト数をあらわす配列
  Dim strOutPut  As String  '出力する文字列
  Dim wkStr    As String  'ワークの文字列
  
  '各列のバイト数をセット(配列0の要素にダミーの値をセット)
  FixByte = Array(0, 100, 150, 50)

  nFrn = FreeFile(0)
  Open "c:\1.txt" For Output As #nFrn
  
    For lRowNumb = 5 To 10
      '出力文字の初期化
      strOutPut = ""
      For nColumNumb = 1 To 3
        'とりあえず書かれている内容を取得
        sData = Cells(lRowNumb, nColumNumb).Value
        
        '固定長のバイト数で調整を行う、ダミーの文字列として、" "スペースを使用
        wkStr = fixStr(sData, CLng(FixByte(nColumNumb)), " ")
        
        '文字列の連結を行う
        strOutPut = strOutPut & wkStr
      Next nColumNumb
      
      '文字列の出力
      Print #nFrn, strOutPut
    Next lRowNumb
  
  Close #nFrn
End Sub

'文字数をパラメータの文字列で調整して返す関数
'引数1.調整される文字列
'引数2.バイト長
'引数3.固定長の調整文字
Private Function fixStr(inStrings As String, inLength As Long, inDmyStr As String) As String
  Dim wkStr  As String  'ワークの文字列
 
  '引数の文字列に、引数の長さの分だけのv調整文字を追加して一時記憶
  wkStr = inStrings & String(inLength, inDmyStr)
 
  'FromUnicodeに変換
  wkStr = StrConv(wkStr, vbFromUnicode)
 
  '左からinLength分の文字を取得
  wkStr = LeftB(wkStr, inLength)
 
  'Unicodeに変換して返す
  fixStr = StrConv(wkStr, vbUnicode)
End Function

サンプルを作りました。

ファイル名などを固定にしていますが、そこら辺は読み替えてください。
それと毎回読んだデータをすぐに書きに行っていたので、一行ずつ書き込むように変更しています。
大きな違いはfixStrというオリジナル関数を追加しています。
この関数で、固定長の文字列として取得できます。

VBでは文字長に関係するときは
  StrConv("文字列", vbFromUnicode)
というのをよく使います。


Sub Main()
  Dim nFrn    As Long
  Dim lRowNumb  As Long
  Dim nColumN...続きを読む

Q固定長データのテキストファイルのスペースについて

固定長データのテキストファイルをExcelで読み込むと、スペース部分が前詰めされてしまいます。
スペースもそのままカラムとして読み込む方法はありませんでしょうか。

例えば次のような固定長データがあるとします;

No.  項目名   タイプ   桁数
1    コード    文字    6
2    状態    文字    10


テキストファイルで開くと下記のような表示です(以下、便宜上スペースを”_”で表します);

data011________1
data02_________1
data03____1_____


これをExcelにて固定長フィールドのデータとして読み込む際、
フィールドの区切り位置として6カラム目と16カラム目に矢印を置き
全てのフィールドを文字列として読みこむとExcelでは下記のように表示されます;

      A列   B列   
1行目  data01 1________1
2行目  data02 1
3行目  data03 1


ここで、B2セルとB3セルがそれぞれ

_________1
____1_____

とスペースを保持したままの形で読み込む方法はありませんでしょうか。

手動でもVBでもかまいません。ご教示頂ければ幸いです。

固定長データのテキストファイルをExcelで読み込むと、スペース部分が前詰めされてしまいます。
スペースもそのままカラムとして読み込む方法はありませんでしょうか。

例えば次のような固定長データがあるとします;

No.  項目名   タイプ   桁数
1    コード    文字    6
2    状態    文字    10


テキストファイルで開くと下記のような表示です(以下、便宜上スペースを”_”で表します);

data011________1
data02_________1
data03____1_____


これをExcelにて固定長フィー...続きを読む

Aベストアンサー

固定長ですがシーケンシャルで読み出すので十分と思います。


Sub macro2()
 Dim buf As String
 Dim i As Long
 Range("A:B").NumberFormat = "@"

 Open "c:\test\data.txt" For Input As #1
 Do Until EOF(1)
  i = i + 1
  Line Input #1, buf
  Cells(i, "A") = Mid(buf, 1, 6)
  Cells(i, "B") = Mid(buf, 7, 10)
 Loop
 Close #1
End Sub

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルで空白セル”” と未入力セルの違い

関数で セルA1 に=if(B1=0,"","入力済")
としました。
セルの選択を素早くするためにショートカットキー「Ctrl+↓」を
利用しています。
通常の未入力空白セルは上記のショートカットで飛ばされて選択
されません。
これに対して上記関数で ""  として入力されたものを
コピーして値だけを貼り付けたとしても
上記ショートカットキーで飛ばされず選択されてしまいます。
見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。)
未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。
また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに
戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。
おわかりの方お教えください。

Aベストアンサー

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。

つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね?

だったら簡単です。

すべての式を
=if(B1=0,"","入力済")
ではなく
=if(B1=0,1/0,"入力済")
にしておきましょう。

すると、未入力の所は、空白("")にならず「#DIV/0!」になります。

そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。

「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。

セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。

「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。

「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。

もちろん、大量にあっても、手順は変わりません。

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング