IBM AS/400のデータ転送でファイルタイプBIFFでEXCELファイルに落としたものをACCESS2000でインポートすると外部フォーマットが正しくないとなります。以前はACCESS VER.2.0では出来たのですが。どなたかご存知の方、お教えねがえないでしょうか

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

A 回答 (3件)

エクセルのバージョンはどれをお使いになっていますか?


エクセルのバージョンが古いとひょっとしてAccess2000では読めない可能性があります。

また、一手間かかりますが、エクセルからCSV形式に出力して、Accessで取り込む回避策も考えられます。

この回答への補足

oribeyakiさんアドバイス有難うございます。
EXCELLは2000です。
IBMAS/400でEXCELLにデータ転送するとEXCELLの中は下の様になってます。
A B C D E F G H I J K L M
1 TSUKI HI KINGAKU
2 09 29 \3,000
3
4
上記の様に一行目にフィールド名が必ず入ってしまうのです。
たぶんACCESS2000ないでEXCELLの一行目を削除してからインポートすれば良いと思いますが、やりかたが解かりません
引き続きアドバイス願えればありがたいのですがお願い致します。

補足日時:2001/09/29 09:27
    • good
    • 0

返答が遅くなりすいません。


推測のレベルでしかないのですが・・・複数の原因があるように思えます。

AS400側の「BIFF」作成部分というのは旧来のままですか?
そうであるとすると、「BIFF」のバージョン違いによるエラーが考えられます。
(Excel2000対応:BIFF,BIFF3,BIFF4,BIFF5,BIFF8)
また、「BIFF8」になって、かなり機能拡張がありました。

また、別の事例で「CSV」形式のファイルをExcel取り込み→Accessインポートの過程で同様のエラーが出ているものがありました。
これは、Access97とAccess2000のテキストドライバの違いでこのエラーが起こるとの事でした。

推測1
ExcelではそのBIFF形式は問題なく読み込めるが、Accessではそのバージョンの形式を認識できない。もしくは「xls」にひもついているExcel2000(BIFF8)の形式と判断して読み込もうとして失敗している。

推測2
Excel2000ではそのBIFF形式を認識していない。また、開いた時は入っているように見えても内部コードがおかしい。
(開いてみると何かメッセージが出るかも?手がかりになりそうならめっけもん)

対処方法(これも推測)
場あたり的対処
一度その「xls」ファイルを開いて、「最新のバージョンに変換しますか?」が出たら変換してセーブ、出なかったら一度テキスト形式(CSVとか)に落として、それを新規のExcelに取り込み。
その後、Accessで取り込み。
(ようは、力押しで最新のExcel形式にしてしまってから取り込み。)

抜本的対処
AS400のファイル作成プログラムを「BIFF8」の形式で作成しなおす。

※ただし、AS400側の「BIFF」作成部分が旧来のままという前提に立ったコメントにつき、おおはずしの可能性大(爆)
まあ、ドライバのバージョン違いと形式のバージョン違いに起因するエラーには間違いないとは思いますが・・・^^;
(BIFFは扱ったこと無いので良く判らないんです。すいません。)

原因個所が絞り込めてきましたので、問題解決まで後少しってとこですかね。

また、補足、私の勘違い、意味がわからないなどありましたら、ご返答ください。

この回答への補足

こんにちわ、oribeyakiさん
返答有難うございます。
場あたり的対処やってみました。最新のバージョンに変換したら出来ました。
有難うございます。
あと、出来ればEXCELLを開いて、最新のバージョンに変換しますか?を
ACCESS2000のマクロ又は、モジュールを使って出来ないでしょうか。
しつこくてすみません。
宜しくお願いします。

補足日時:2001/10/01 14:22
    • good
    • 0
この回答へのお礼

色々長々と質問してすみませんでした。
とりあえず場あたり対処でやっていきます。
ありがとうございました。

お礼日時:2001/10/03 14:36

おはようございます。



AccessにExcelからデータを取り込むのには、「インポートウィザード」を使われてますか?
(「テーブル」の「インポート」を選択してExcelブックを選ぶと自動的に出てくるものですが・・・)
「インポートウィザード」を使用していれば、補足していただいた内容を実現する事は簡単にできます。

流れを書きます。
1・「テーブル」で「新規作成」→「テーブルのインポート」を選択。
2・インポートダイアログの「ファイルの種類」を「MicroSoft Excel(*.xls)」にして、指定のエクセルブックを選択。
3・「ワークシートインポートウィザード」画面が開きます。
4・画面1ページ目は取り込むシートの選択。「次へ」を押して2ページ目がご要望の設定です。「先頭行をフィールド名として使う」チェックボックスをONにすれば、これで先頭のフィールド名がデータとして扱われません。
5・新規に作成するのであれば、次ページから新規作成のプロセスで「フィールド名」を変更したりして取り込みます。
6・既存のテーブルにデータを追加する場合1つ問題があり、4で先頭行をフィールド名として扱う設定にしてありますので、取り込み先のテーブルのフィールド名と、Excelのフィールド名が一致している必要があります。これと取り込むデータが、テーブルのデータ型と一致していれば問題ないはず。

「ウィザード」を使ってやる場合はこのような流れになると思います。
もし、既存テーブルに取り込みでフィールド名が違う場合、一度別に新規にテーブルを作成してから、元テーブルにインサートするとか、前のデータはすべて要らない場合は、新規作成後リネームするなどいろいろ回避はできます。

「ウィザード」を使用していなくて、マクロの「ワークシート変換」や、VBAで「TransferSpreadSheet」を使用しているのであれば、「フィールド名の設定」を「YES/はい」にすれば、先頭行がフィールド名として扱われます。
「範囲/Range」を先頭行無しで選択して既存のテーブルにインポートすることはできないようです。(やれると思ったのですが・・・、融通きかねーなぁ^^;)
ただ、この場合も、「ウィザード」の6と同じ問題に引っかかるので、同じように回避策が必要になります。

すいません、取り留めの無い文章になってしまい、判りづらいかと思います。
補足、私の勘違い、意味がわからないなどありましたら、ご返答ください。
(朝はどうにもダメなんですよ。)

この回答への補足

おはようございます。
流れとても判り易いです。
さっそく試みてみましたが流れ3へ行く前に"外部テーブルのフォーマットが正しくありません。"とエラーが出てしまいます。
(:_;)エーン

補足日時:2001/09/29 13:52
    • good
    • 0

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

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

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

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

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

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

Qハードディスクを複数回フォーマットすると

ハードディスクを複数回フォーマットすると

Windows、MAC、LinuxなどでハードディスクにOSなどをインストールしてまた再インストール時にフォーマットしたり、いままで使っていたハードディスクをフォーマットして増設したりする場合、ハードディスクの容量は購入時に比べて落ちたりするんでしょうか?

Aベストアンサー

その過程で大量の不良セクタなどが発生しない限り
容量に変化はありません。
通常の使用なら、大量の不良セクタが発生することもほとんどありません。

QAS400 印刷用ファイルからCSVに変換する方法

AS400に無知な者です。
今現在使用しているASのバージョンすら
わかっていません。


実行すると自動的にデータが集計され
印刷用ファイルができるプログラムがあります。
データ形式で作成することは選択できません。

現在はASから印刷された帳票をみながら
エクセルに入力したりと、
かなりお馬鹿なことをしています。

わざわざ印刷しなくても
スプールにおちた印刷用ファイルを
CSVなどPC上で処理できるデータにかえる
コマンド等はないものでしょうか?

最初からデータ形式でおとせという
つっこみがきそうですが
どのファイルにアクセスして
どういう処理をしてるのか全く持って不明のため
現在の実力では不可能です。

誰かたすけてくださいまし。

Aベストアンサー

CPYSPLFコマンドでスプールファイルを物理ファイルへ変換できます。
その物理ファイルをPCへ転送すればできます。

参考URL:http://www.onbedo.com/forCOMP/AS400/qa_os.html

Qハードディスクのフォーマット

お世話になります。

今まで使用していたIDE接続のハードディスクをとりあえずフォーマットしたいのです。
(その後データが復元不可能なところまでしたい)

このハードディスクは今使っている前のパソコンで使用していたもので、前のパソコンはマザーボードが壊れたので今回新しくパソコンを購入しました。

そしてこのIDE接続のハードディスクを他人に譲渡するので中身をとりあえず消したいのです。(フォーマット)


普通であればOSのCDから簡単にフォーマット出来ると思うのですが、今回の私のパソコンにはIDEポートがひとつしかありません。

そのポートにIDE接続のハードディスクを繋げばドライブが繋げず、ドライブを繋げばIDE接続のハードディスクが繋げず…

完全に悪循環です。。

とりあえずドライブを外し、強引にOSが2つの状態でXPを起動。
その後IDE接続のドライブのフォーマットを試みましたが、思った通りダメでした。

何か良い方法はないものでしょうか?
OS上からでもフォーマットできるとか。。

宜しくお願い致します。

お世話になります。

今まで使用していたIDE接続のハードディスクをとりあえずフォーマットしたいのです。
(その後データが復元不可能なところまでしたい)

このハードディスクは今使っている前のパソコンで使用していたもので、前のパソコンはマザーボードが壊れたので今回新しくパソコンを購入しました。

そしてこのIDE接続のハードディスクを他人に譲渡するので中身をとりあえず消したいのです。(フォーマット)


普通であればOSのCDから簡単にフォーマット出来ると思うのですが、今回の私のパソコ...続きを読む

Aベストアンサー

>OSのCDから簡単にフォーマット出来ると思うのですが、今回の私のパソコンにはIDEポートがひとつしかありません

CDからフォーマットできません。

>ポートにIDE接続のハードディスクを繋げばドライブが繋げず、ドライブを繋げばIDE接続のハードディスクが繋げず

ドライブが繋げずとは?(CDドライブ?)

>IDEポートがひとつしかありません

ケーブルの端に繋げばマスター、中程に繋げばスレーブ(ジャンパをいらう必要があるものも)と大抵2台つなげるようですが、差込み口がないのですか?

>OSが2つの状態でXPを起動。
その後IDE接続のドライブのフォーマットを試みましたが、思った通りダメでした

マイコンピュータ右クリック「管理」「ディスク管理」古い方のHDが見えたら右クリック「フォーマット」ができませんか?

フォーマットしても復旧可能な場合が多いので、フリーの復旧ソフトで完全削除(ランダムに意味不明の記号を上書きする)した方が確実です。
あなたのPCで出来ない場合譲渡した人に完全削除を依頼(立会いの下で)することは出来ませんか?

他人に譲渡するのはオプションなどの場合でしたら500円か1000円程度でしょうから物理的に破壊する方簡単です。

>OSのCDから簡単にフォーマット出来ると思うのですが、今回の私のパソコンにはIDEポートがひとつしかありません

CDからフォーマットできません。

>ポートにIDE接続のハードディスクを繋げばドライブが繋げず、ドライブを繋げばIDE接続のハードディスクが繋げず

ドライブが繋げずとは?(CDドライブ?)

>IDEポートがひとつしかありません

ケーブルの端に繋げばマスター、中程に繋げばスレーブ(ジャンパをいらう必要があるものも)と大抵2台つなげるようですが、差込み口がないのですか?

>...続きを読む

QAS400にてサブファイルレコードの再定義

現在RPGをはじめて3ヶ月程度のものです。

全体の流れ:
1.品目マスタを「作成日、注文番号、納期、品目番号」の順番で読み取る。
2.1をサブファイルレコードとして一覧表示する。
3.2の際に選択項目を設け、修正レコードを選択できるようにしてある。
4.選択項目を指定して実行すると修正画面に移動する。
5.修正項目は納期と納品数のみで、それ以外は表示のみを指定。
5.修正して実行すると、品目マスタが修正されて一覧の画面に戻る。
6.戻ってきた後の一覧画面は修正したレコードは修正した内容を表示して、
  修正していないレコードはそのままにする。

という流れです。

上司のアドバイスではCHAINを使って、
再度品目マスタをユニークキーで読み取って、
修正した内容のみを読み取ればよいといいますが、
いまいちやり方が分かりません。

ただイメージとしては、
サブファイルを表示する際にS1という件数を表示する為の仮のフィールド?があり、
それをS1SEQNというサブファイル上のレコード件数を表示するフィールドとして使っています。
(Z-ADD S1 S1SEQN という具合です。)

で、品目マスタ内のフィールドとしてE1SEQNというのがあります。
ですので、最初に順次アクセスする際に
(Z-ADD S1 S1SEQN )の以外にも
(Z-ADD S1 E1SEQN )を使って(現在はしていない)、UPDAT 品目マスタを行っておいて、

修正画面から戻ってきてから、S1SEQNと品目マスタ内のE1SEQNを引っ掛ければいけるのかと思っています。

ところがCHAINを使った場合の、このやり方がさっぱり分かりません。

もしかすると私のイメージ自体が間違っている可能性は凄く高いのですが、
どなたかアドバイスの程お願いします。

現在RPGをはじめて3ヶ月程度のものです。

全体の流れ:
1.品目マスタを「作成日、注文番号、納期、品目番号」の順番で読み取る。
2.1をサブファイルレコードとして一覧表示する。
3.2の際に選択項目を設け、修正レコードを選択できるようにしてある。
4.選択項目を指定して実行すると修正画面に移動する。
5.修正項目は納期と納品数のみで、それ以外は表示のみを指定。
5.修正して実行すると、品目マスタが修正されて一覧の画面に戻る。
6.戻ってきた後の一覧画面は修正したレコードは...続きを読む

Aベストアンサー

かななか回答が付かないですね^^;

私は画面系は苦手なのでAS/400系の掲示板などのサイトをご紹介します。(全て日本語のページです)
教えてgooはAS関係の技術者が少ないのか質問も回答も少ないです。AS/400会議室で聞けば一発で答えて貰えると思いますよ。

【AS/400会議室】
http://www7.big.or.jp/~pinball/discus/as400/index.html

【AS-400 Tips&Techniques】
http://www.as400-net.com/

【HRM】
http://hrm.fixa.jp/

【くっすんの最強リンク集】
http://kusuda777.web.infoseek.co.jp/links/59.htm
http://kusuda777.web.infoseek.co.jp/links/61.htm

ご検討をお祈り申し上げます。

QハードディスクのフォーマットとWindows98の初期化

こんにちは。
東芝Dynabook SS 3020 の調子が悪いため初めて初期化しようと思っています。
マニュアルの注意に書いてあった事で少し気になることがありました。

「復元する前にハードディスクのフォーマットを行います。」

僕は、Recovery CD-ROMでそのまま初期化すればいいと思っていたのですが、その前にハードディスクのフォーマットとやらをやらなければならないのでしょうか?どうすればハードディスクのフォーマットができるのでしょうか?

初心者でいきなりやるのが少し心配です。
申し訳ございませんがアドバイスの方よろしくお願いします。

Aベストアンサー

>「復元する前にハードディスクのフォーマットを行います。」

 これはリカバリCDを挿入して再起動すると必ず利用者にこのメッセージを促すだけのことです。
 通常はバックアップをして(残したいデータ類を外部メディアに移動する)からリカバリするのですが、中には何もしないで即初期化する人がいるので
 心配性のPCが「これから自動でHDDをフォーマットして初期化しますが・・・・よろしいですね。」
 と親切にお聞きしているだけです。
 
 ということであなたはバックアップはお済ですか?
フォーマットしてからでは後の祭りですが・・・・

QAccessでdatファイルのインポート

Accessを最近はじめたばかりなので、基本的な内容だったらすいません。
自分なりに調べたんですが、分からなかったので質問させて頂きます。

Access2003 SP1を使っているのですが、datファイル(固定長テキストファイル)をインポートする方法を教えていただけないでしょうか?
拡張子を「.txt」に変更してインポートすればいいのは調べて分かるのですが、業務上datファイルのままでインポートしたいんです。

申し訳ありませんが、ご回答宜しくお願い致します。

Aベストアンサー

> そのまま、インポートするには、レジストリの操作が必要になります。

[ACC2000]ファイルのインポート/エクスポートで '読み取り専用' のエラーが発生する
http://support.microsoft.com/default.aspx?scid=kb;ja;436329


> もう少し教えていただけないでしょうか?

Sub インポート()

  Dim strOldName As String
  Dim strNewName As String

  strOldName = "c:\xxx.dat"
  strNewName = "c:\xxx.txt"

  Name strOldName As strNewName
  DoCmd.TransferText acExportDelim, _
          "インポート定義名", _
          "テーブル名", _
          strNewName,
  Name strNewName As strOldName

End Sub

標準モジュールに、上記をコピーして、Sub ~ End Sub の間にカーソルを
おき、F5 キーを押してください。
#そちらの環境に合わせて、ファイル名や、テーブル名等は修正してください。

> そのまま、インポートするには、レジストリの操作が必要になります。

[ACC2000]ファイルのインポート/エクスポートで '読み取り専用' のエラーが発生する
http://support.microsoft.com/default.aspx?scid=kb;ja;436329


> もう少し教えていただけないでしょうか?

Sub インポート()

  Dim strOldName As String
  Dim strNewName As String

  strOldName = "c:\xxx.dat"
  strNewName = "c:\xxx.txt"

  Name strOldName As strNewName
  DoCmd.TransferText acExportDelim,...続きを読む

QXPで使っていた外付けハードディスクをウィンドウズ98でフォーマットしないで使うことはできるのでしょうか

唐突ですがXPで使っていた外付けハードディスクをウィンドウズ98でフォーマットしないで使うことはできるのでしょうか。

そのハードディスクの中身をその98のパソコンで見れるようにしたいです。

ちなみに正確にはそのハードディスクはハードディスクをハードディスクケースに入れたものです。

お手数ですが教えて下さい。

Aベストアンサー

おはこんばんにちは、
ご自分でHDDをケースに入れられたのですかね?
XPでフォーマットしている場合は
30GBを超える物ですと確実にNTFSです。
30GBまでならFAT32かNTFSかを
聞かれますのでどちらでされているかです。

さらに98ですと外付けケースのドライバが無いと
見れませんのでご注意を!

結論から言うと98ドライバが無い場合、
自作で外付けで30GBを超えている場合、
まずそのままでは見ることが出来ません。

Q【Access2000】CSVファイルのインポート方法

Access2000(OS:WinXP)でCSVファイルをインポートするVBAを作成しています。

Open "ファイル名" For Input As #txtFileNumber
Input #txtFileNumber, txt1, txt2...

上記のようにtxt1,txt2...の変数に代入しているのですが、CSVファイルの行数が可変のため、どうすれば良いのか困っております。最大100フィールド程あるのですが…。何か良い方法がありましたらお教えください。

Aベストアンサー

1,2,3,4
1,2,3,4,5,6
1,2,3,4,5,6,7,8

このような Test.csv があるとします。

Private Sub コマンド0_Click()
  Dim I    As Integer
  Dim N    As Integer
  Dim Datas() As String
  
  Datas() = FileReadArray("C:\Temp\Test.csv")
  N = UBound(Datas())
  For I = 0 To N
    Debug.Print Datas(I)
  Next I
End Sub

[イミディエイトウィンドウ]

1,2,3,4
1,2,3,4,5,6
1,2,3,4,5,6,7,8

と、このように読み込むことが可能です。

Private Sub コマンド0_Click()
  Dim I    As Integer
  Dim J    As Integer
  Dim N    As Integer
  Dim M    As Integer
  Dim Datas() As String
  Dim Fields() As String
  
  Datas() = FileReadArray("C:\Temp\Test.csv")
  N = UBound(Datas())
  For I = 0 To N
    Fields() = Split(Datas(I), ",")
    M = UBound(Fields())
    For J = 0 To M
      Debug.Print Fields(J)
    Next J
    Debug.Print "---------"
  Next I
End Sub

と、改造すれば、各行の列データを取り出すことも可能です。

1
2
3
4
---------
1
2
3
4
5
6
---------
1
2
3
4
5
6
7
8
---------

※参照設定で、Microsoft scripting runtime を参照するようにする必要があります。
※長くなりますので、FileReadArray()はおって紹介します。

1,2,3,4
1,2,3,4,5,6
1,2,3,4,5,6,7,8

このような Test.csv があるとします。

Private Sub コマンド0_Click()
  Dim I    As Integer
  Dim N    As Integer
  Dim Datas() As String
  
  Datas() = FileReadArray("C:\Temp\Test.csv")
  N = UBound(Datas())
  For I = 0 To N
    Debug.Print Datas(I)
  Next I
End Sub

[イミディエイトウィンドウ]

1,2,3,4
1,2,3,4,5,6
1,2,3,4,5,6,7,8

と、このように読み込むことが可能です。

Private Sub コマ...続きを読む

QOS「XP」使用のハードディスクをフォーマットして入れなおし

XPの調子が悪くなってしまって、一旦ハードディスクの中身をフォーマットしてから、OSとソフトを入れ直したいのですが、フォーマットの仕方がよく分りません。
XPの場合ソフトからフォーマットできるような事を聞いた覚えがあるんですが、これは「OSのみをフォーマットする」といういう意味なのか、「ハードディスク内を全てフォーマットする」という意味なのか、どちらでしょうか?
そして、私が今、希望としている、ハードディスク内を全てフォーマットして全く新しい状態としてOSを入れなおしたい場合はどうやればいいのでしょうか?
バックアップCDは作ってあります。よろしくお願いします。

Aベストアンサー

・PCの電源を入れます。
・POST画面(EnergySterが表示される)で下の方に
「Press DEL to enter SETUP」と表示されたら
すかさず「DEL」キーを押します
※機種によってキーが違う「F2」キーかもしれない。
・「CMOS Setup Utility」の画面が出ますので
「Advanced BIOS Features」の項目を↓↑キーで選択後「Enter」
・「Advanced BIOS Features」内の
「First Boot Device」を↑↓キーで選択後「Enter」
・「Floppy」か「HDD-0」になっていたら「CD-ROM」に変更します。
・「F10」キーでセーブします。
・「Yes or No」を聞かれますから「Y」キーを押します
・再起動しますからWindowsXPのCD-ROMを入れてください。

○余計なトラブルを避けたいので、できるだけ工場出荷状態に戻してください。
高速なメモリで不具合が出ることがあるそうです

○リカバリーCDの場合は指示に従ってインストールしてください

○WindowsXP通常版の場合
・自動的にブートしない場合(Press Enter…と指示が出た場合)は何かキーを押してください
・指示に従ってインストールしてください。
※パーテーションの作成とフォーマットはここで行なわれます
※フォーマット形式は9x系と互換性がなくていいならNTFSで。
※クイックフォーマットは不具合を引きずる可能性があるのでお勧めしません。

ユーザー名は「1バイト文字(半角英数字)」で。
漢字はDOSから見えません

○余談
WindowsXPのインストーラでパーテーションを区切るとドライブ文字が入れ替わることがあるので、9x系の起動フロッピーかDOSのフロッピーで起動して「fdisk」で区切ったほうが望ましい。
32GB以上のFATパーテーションを区切ることができるし。拡張パーテーションも確保できる。

・PCの電源を入れます。
・POST画面(EnergySterが表示される)で下の方に
「Press DEL to enter SETUP」と表示されたら
すかさず「DEL」キーを押します
※機種によってキーが違う「F2」キーかもしれない。
・「CMOS Setup Utility」の画面が出ますので
「Advanced BIOS Features」の項目を↓↑キーで選択後「Enter」
・「Advanced BIOS Features」内の
「First Boot Device」を↑↓キーで選択後「Enter」
・「Floppy」か「HDD-0」になっていたら「CD-ROM」に変更します。
・「F10」キーでセーブし...続きを読む

Q【Access2000VBA】CSVファイルインポートの不具合

Access2000でCSVファイルインポートをVBAで行っています。
ところが、CSVファイル内に全角カンマ(,)がある場合、
区切り文字として認識されてしまい困っています。
区切り文字としてではなく文字として取得したいのですが可能でしょうか。

お手数ですが方法がわかる方、ご回答よろしくお願いいたします。

Aベストアンサー

それは、無理だと思います。
CSVでなければならないのでしたら、全角カンマを他では絶対使われない文字に変換しておいて、インポートしてから元に戻すという手があります。
また、CSV上でダブルクォーテーション(")で文字列を挟んでおけば、何とかなるかもしれません。
CSVではなく、可変長のテキストとして保存することが可能でしたら、文字列区切りをカンマ以外、例えばタブにするなどで対応できます。
固定長形式の処理が可能でしたら、それも一考の価値があります。がファイルサイズがでかくなります。
ご参考になれば幸いです。


人気Q&Aランキング