• ベストアンサー

excelで1セル毎のバイト数指定できますか?

excelのデータをテキスト(スペース区切り)形式で保存した時、セル1マスを10バイト右詰め(半角10文字以下はスペース)にしたいのですがどのようにすればよいでしょうか?どなたかアドバイスお願いします。 例)  ______ |7.50│ ----- ↓ テキスト形式に変換 □□□□□□7.50 ※□1個を半角スペースと考えてください

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

  • ベストアンサー
  • takibo
  • ベストアンサー率57% (116/200)
回答No.4

No.2 takibo です。こちらはAccess2002での確認となります。また、テーブル作成の手順は省かせていただきます。 エクスポートの手順は下記サイトを参考にしてください(ここで手順を説明するより分かりやすいかと思います) http://www.tsware.jp/study/vol7/table60_45.htm 上記の方法で行うと各フィールドが左詰になって出力されます。 もし質問のように右詰の結果をご希望であればクエリを作成する必要があります。(フィールドの数が多いと少々面倒になりますが) 【例】テーブル名『明細』として以下のようなテーブルがあるとします。 商品名  単価  数量 AAAAA   50.5   30 BBBBB   150   40 明細テーブルの数値フィールドを右詰固定長(8桁)として設定する場合 (1)クエリの画面で「ウィザードを使用してクエリを作成する」を実行 (2)[テーブル/クエリ(T)]で[テーブル:明細]を選択、全てのフィールドを選択し([>>]を押す)  [次へ] → [次へ] → [完了] とすすむ(途中の設定は必要ありません) (3)出来上がった『明細 クエリ』をデザインビューで開く (4)フィールド欄を以下のように入力・・・必要な桁数分の @ を入力します 単価 → Format([単価],"@@@@@@@@") 数量 → Format([数量],"@@@@@@@@")   ※入力するとフィールド名が自動で「式1」「式2」と変換されます    任意のフィールド名に設定するには       デザインビューで目的のフィールドにカーソルを置き、右クリック → プロパティ(P) で [標題] の部分に項目名を入力 あとはテーブルのエクスポートと同じ手順でクエリをエクスポートすれば完成です。 フィールドに入力する関数として以下のような方法もあります Right(String(11," ") & [単価],11) こちらだと桁数を数字で入力できるのでわかりやすいかもしれません。 (説明が長くなって見づらくなってしまいました。すみません)

wagner0322
質問者

お礼

ありがとうございました、アクセスはまだ使ったことがないので、これから勉強ということになりますが能力向上のためにがんばってみようと思います。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 固定長ということですね。 それで、全て半角でないと、通常、テキスト出力でしたら、文字化けの原因になりますから、以下は、全角文字は除外しています。 '<標準モジュール> Sub 固定長出力()   Dim Fname, Fno As Integer, myR As Long, myC As Long, k As Integer   Dim buf As String, i As Long, j As Long   'ファイル名は、ブック名を使用   Fname = Mid$(ThisWorkbook.Name, 1, _   InStr(ThisWorkbook.Name, ".") - 1) & ".txt"   '範囲は、使用範囲。Withの次は、変更可能   With ActiveSheet.UsedRange    myR = .Rows.Count    myC = .Columns.Count   End With   Fno = FreeFile()   Open Fname For Output As #Fno   For i = 1 To myR    For j = 1 To myC      k = LenB(StrConv(Cells(i, j).Value, vbFromUnicode))      '半角・全角チェック。もし全角があれば、文字は出力しない      If Len(Cells(i, j).Value) = k Then       buf = buf & Space(10 - k) & Cells(i, j).Value       Else       buf = buf & Space(10)      End If    Next j    Print #Fno, buf    buf = ""   Next i   Close #Fno   MsgBox "終了!" End Sub

wagner0322
質問者

お礼

ご回答ありがとうございます。しかし、まだまだVBAやマクロに関しては勉強不足のためわからないところが多いのでイマイチわかりませんが試してみようと思います。

  • takibo
  • ベストアンサー率57% (116/200)
回答No.2

Accessだととても簡単に変換できるんですが。 以下のようなフリーソフトがあります。 私は試してないので(すみません)使い勝手の感じ方はそれぞれだと思いますが どちらもVBAによるものでシステムへの影響等はないはずですので試してみてはいかがでしょう。 「固定長テキストファイル読み込み/書き出し.xls」 http://www.vector.co.jp/soft/win95/business/se129041.html 「可変長テキスト←→固定長テキスト変換コマンド」 http://www.vector.co.jp/soft/dos/util/se176624.html

wagner0322
質問者

お礼

ご返答ありがとうございます。 さっそくご紹介いただいたフリーソフトを使ってみようと思います。 あと、後々の勉強のためにMicrosoft Accessで上記の操作を実行する場合の手順を簡単にでいいので教えていただけませんでしょうか? お暇がある時でよいのでよろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

エクセルの操作や設定ではできないでしょう。 (1)できたとして、その後何につかうのでしょう。あまり使い道がないようにおもう。 エクセルに読みこますと、普通では、元の木阿弥になる。 (2)スペースを先頭部に確保するのは、スペース以外の区切り文字(標準は”)が必要と思うので、そうするとスペース区切りでなくなるというジレンマあり 一応考えた案を上げます。 エクセルVBAで標準モジュールに貼り付け実行します。 Sub test01() d = Range("A65536").End(xlUp).Row Close #1 Open "aaa2.prn" For Output As #1 For i = 1 To d s = "" For j = 1 To 3 n = Cells(i, j) If IsNumeric(n) Then l = Len(n) m = Mid(" ", 1, 10 - l) & n MsgBox "=" & m & "=" s = s & m Else s = s & " " & n End If Next j MsgBox "=" & s & "=" Print #1, s Next i Close #1 End Sub テスト結果は 12 2333 ab 234 345678 sd のようなものです。(メモ帳などで、MS明朝などPつき以外で表示のこと) シートのデータが3列の例です。 MSGBOXの行は確認のため入れたが、削除して可。

wagner0322
質問者

お礼

ご返答ありがとうございます。 VBAの事はまだわからない点が多いですが試してみようとおもいます。

関連するQ&A

  • EXCELのA列に全て入ってしまったデータをセル毎に表示したい。

    あるホームページにTableタグで記述された表があります。 その表をドラッグ選択でコピーし、EXCEL2003にテキスト形式で貼り付けると、EXCELのA列に各行のデータが全て入ってしまいます。 tdタグ毎に、EXCELのセルに振り分けて表示したいのですが、どうすればよいでしょうか。 【試したこと】 1)文字コードを変換すればよいのかと思い、解らないながらもStirling1.31というソフトで文字コードをみると、列の間は[20]というコード?になっておりました。半角スペースで入力したデータも同じく[20]と出ますので、tdタグは半角スペースとして認識されているのでしょうか。 文字列にも普通に半角スペースがまぎれているので、tdのコードのみをどう変換したらよいのかわからず、閉じました。 2)EXCELのファイルをテキスト形式で保存し、開くときにスペース区切りを選んで、区切りたい位置をクリックして、"フィールドの幅"というものを設定したものの、文字の長さが行ごとに違うので固定の幅では上手くセル毎に振り分けられませんでした。 至らない説明で申し訳ありません。ホームページのデータをダイレクトにEXCLEにテキストで貼り付けるという方法からして間違っているのでしょうか。 600件以上あるデータで困っています。 詳しい方ご教授願います。 どうぞよろしくお願いいたします。

  • エクセルの1セルを1文字でテキストにする方法

    エクセルで編集したものをノートパッドに貼り付けた時に、どうしても余分なスペースが取り込まれてしまい困っています。 エクセルには1セルに対し半角英数を一文字ずつ入力しており、空白セルも存在させています。 これをノートパッドに貼り付けして、textとして使用したいのですが、余分なスペースが入ってしまいます。 また、エクセルの名前をつけて保存でも同じくスペースが入ってしまいました。 エクセルで空白セルにしているところは半角のスペースとして使用したいので、置換も使えません。 どのようにしたらエクセルからテキストにうまく変換できますか? よろしくお願い致します。

  • エクセルを文字数固定でテキスト形式に・・・

    エクセル97です。宜しくお願いします。 エクセルにあるデータをtxtに変換させて、別のプログラムに移したいのですが、問題なのが、受ける側で行毎に頭からの文字数で認識して読み込んでいくのですが、そのままテキスト形式で保存すると、各セルには文字数の多い少ないがある為、各行毎にそのカウントしている文字数の場所が違ってきて、読み込みも各行毎に違ってきます。これをそろえる為に各行毎に文字数を固定させて変換できないかと思っているのですが、 そこで・・・ 列毎に、文字列のある列の文字数を決めておいて、その文字数に満たない場合は、その満たない数だけスペースを入れて変換したいのですが・・・すみません、説明がいまいちですが・・・ 例えば・・・ *A列は文字数を6文字と決める。 *そのA列には、文字列が各行のセルに「あいう」「あいうえお」「あい」などの文字列があります。 *テキスト形式に変換されたときに、 ・「あいう」→「あいう___」 ※(_はスペース) ・「あいうえお」→「あいうえお_」 ・「あい」→「あい____」 と変換させたい。 説明もなんだかへたくそで、ちょっと難しいと思いますが、どなたか良い方法を知りませんか?非常に困っています。宜しくお願いします。

  • エクセルで100行ほどのセルに、単語が3~10個、半角スペースで区切ら

    エクセルで100行ほどのセルに、単語が3~10個、半角スペースで区切られて入力されています。 これを一気にスペースごとに別のセルに移したいのですが。「データ」→「区切り位置」だと1行ごとに行わなければならないので…よろしくお願いします。

  • セルの文字数を合わせること出来ますか?

    違うソフトにエクセルのデータを移すためにセルの文字数を合わせないといけないのです。 例えば、全角で15文字半角で30文字になるようにしなければいけないので8桁の数字コードを打ったあと22回スペースを入れてます。とても効率悪く困ってるのですが何かいい方法はありますか?勝手にスペースが入るようにならないでしょうか??よろしくお願いします m(_._)m

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

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

  • テキスト形式(.txt)をエクセルで読み込むときに1桁目の「0」を読み込みたい

    タブ区切りで作成されたテキストデータがあります。 これをエクセルで読み込むと、タブ区切りからセル区切りに自動的に変換されますが、 テキストに「0」から始まるデータがある場合、エクセルに変換されると数値として読み取ってしまうので、2桁目以降の0以外の数字を1桁目として認識してしまいます。 つまり、 「テキストデータを「文字列」のデータとしてエクセルで読み取る」 方法を探しています。 ご存知の方、教えてください。 よろしくお願いいたします。

  • EXCELから固定長テキストファイルにうまく書き込めない

    EXCELのデータを固定長で保存するためテキスト(スペース区切り)の形式で保存したのですが、 結果をメモ帳で見てみると途中(237文字)で改行?されていました。 各行先頭から26個のセルに文字や数字がはいっており、セル幅は17前後です。 1レコード1行にするにはどうすればよいでしょうか。 困っております。よろしくお願いします。 実際には次のコマンドで保存しました。 ActiveWorkbook.SaveAs Filename:=file_path & filename_txt1, _ FileFormat:=xlTextPrinter, CreateBackup:=False

  • Excelでバイト数の最大数が決まったデータを作りたいんです!

    上手く説明出来ないんですが・・。 エクセルで、項目それぞれにバイト数の最大数が決まったデータを作りたいんです。 例えば ◆職員番号・・・バイト数12(半角)         職員番号は8桁なので、その後ろに残り12バイトまでの半角パディング。 ◆氏名 ・・・ バイト数16(全角8字まで)         全角8文字以内なら、その後ろに残り8文字までの全角パディング。         全角8文字を超す氏名なら、8文字で切る。 ◆カナ ・・・ バイト数58(半角)         半角カナ文字で残りの58バイトまで半角パディング。 *これをcsvに変換します! これを文字列だけ打ち込んだら、自動で最大バイト数まで半角・全角を埋めるようにすることは出来るでしょうか? また、氏名のところのように自動で8文字までの入力しか出来なくするようにすることは出来るでしょうか? 説明が下手で申し訳ないんですが、おわかりになる方ご教授下さい。 よろしくお願いします!!

  • CSVデータをエクセルのセルに入れたい・・・

    よろしくお願いします。 CSVデータを当方ではエクセルで開いてます。 カンマ区切りごとのデータがエクセルのセルに1つずつ入力されてるので 不用データを行や列ごと削除できるので便利に使っていました。 が、他のPCでデータを同じように加工しようとしたところ、最初のセルに全て連続して入っているという状態で、上記のような作業が出来ませんでした。 5台のPCともXPでエクセル2003です。 テキスト形式・タブ区切り・カンマ区切りなどなど専門的なことが良く判っていないため、説明もうまくできませんが、PCの設定なのか?セルに1つづつ分ける方法があるのか?何でわたしのだけ? ?? 引継ぎが出来ず困っておりますのでどなたかお願いします。教えてください!!

専門家に質問してみよう