とあるプログラム(HSpice)から吐き出されたデータをExcelで読み込んでプロットするマクロを作ろうかと思っているのですが、そこで質問です。Excelの仕様としてバイナリデータを直接読み込むことはできるのでしょうか?わかる方いらっしゃいましたらよろしくお願いします。

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

A 回答 (4件)

できることは間違いない。


http://www.geocities.co.jp/siliconvalley/4805/vb …
に実例が載ってます。モードの指定をBinaryにします。
ーー
エクセルのグラフ機能を使痛いらしいが、シートのセル範囲の表に普通の数値をセットしないとダメなはずなんで、この先どういう困難が待ち受けているか。
ーー
質問者が作ったファイルではなさそうですが、どういう仕組み(ソフトが吐き出した)でデータができて、どういうデータなのか、
そちらを正直ぶちまけて、経験者がいないか、質問すべきなんじゃないかな。
物理的測定データのようですが、そちらの作成元では、CSVファイル作成など、どうにもならないのですか。
    • good
    • 0
この回答へのお礼

あ、実例あったんですねえ。検索の仕方が悪かったみたいです。
吐き出すデータはオプションでASCII出力もできるのですがなんせデータ量がでっかいのでやっていられないかなと(いうわけでデフォルトはバイナリ出力)。
データはIEEE754準拠(だと思う)なのですが、いちいちデータを変換して表にはっつけるならASCII出力させたやつを読んだ方が速いのか?どうかわかりませんが取り敢えずまずはASCII読み込みのプログラムを作ってみます。
また何かありましたらよろしくお願いします。

お礼日時:2007/10/11 12:00

マクロというか、VBAを使うならもちろん読み込むことが出来ますが、シートに表示したり、計算の処理をするなら、例えば


Right("00" + Hex(bytedata), 2)
のようにする必要がありますし、さらに吐き出されるデータがIEEEの4バイト実数とか2バイト整数とかなら、それぞれバイト列を通常の数に直す処理を書く必要がありますね。Excelに読み込ます前に、他の方法でテキストデータに直した方が良いような気がします。
    • good
    • 0
この回答へのお礼

ExcelはIEEE754でデータを管理しているとの事だったので、バイナリデータ(IEEE754準拠)からのASCII変換も簡単にできたりするのかなーと思っていたのですがそうでもなさそうですね。がんばってみます。
ありがとうございました。

お礼日時:2007/10/11 12:44

VBAを使えば可能ですよ。



これが参考になるかな。
http://support.microsoft.com/kb/408058/ja
    • good
    • 0

テキスト(数文字含)文字なら出来ますが、画像は無理かも。


テキストもカンマ区切りかタブ区切りに限ります。
数文字は全角文字でも半角数値扱いになります。
    • good
    • 0

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

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

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

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcelでCSVファイル読み込み時、数字の頭のゼロを省略しないで読むには

MS-ExcelでCSVファイルを読むと、数字の頭の'0'ゼロが省略されてしまいます。
あらかじめ桁数が分かっているのなら、書式のユーザー定義で「0000」などと入れる方法もありますが、今回は桁数が一定ではないのです。
ゼロを省略せずに読み込む方法がありましたら教えてください。

データの例として、
========================
00563,0000031,03,1234
========================

これをExcelで開くと、ゼロが省略されてしまう
========================
563,31,3,1234
========================

宜しくお願いします。

Aベストアンサー

その列の書式を文字列とするのでよければ、
1)いったん、空のワークシートを開いて、
2)データ→外部データの取り込み→テキストファイルのインポート で、ファイルの種類を「すべてのファイル」にして、開きたいCSVファイルを選択し、
3)ウィザードの2/3で区切り文字の「カンマ」にチェックを入れ、3/3で0を残したい列の書式を文字列にして「完了」とすればよいと思います。

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

QエクセルVBA テキスト読み込み(区切り文字で読み込み)  サンプルプログラムの改良をしてください。

通常、エクセルでテキストファイルを読み込もうとすると、ウイザードが立ち上がりそれを終えると読み込めます。
私はこのウイザードで、「カンマやタブなどの区切り文字で…」を選択し、次へ。次の画面で「タブ」と「スペース」にチェックを入れます。なお、スペースにチェックを入れると、自動的に「連続した区切り文字は1文字として扱う」にチェックが入ります。
そして次へ→、完了としてテキストを読み込んでいます。

このたび、この操作が面倒なので、マクロで実行しようといろいろ調べていたら、自分のやりたいことと一番近いサンプルマクロを見つけました。以下です。
http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/VBASAMP/IMP_TXT.TXT

このマクロをそのまま書いて実行すると、区切り文字を指定でき、読み込めます。
ただし、このままだと区切り文字を1つしか指定できません。
先ほど書いたように、今回は「スペース」「タブ」で区切って開きたいのですが、上記のサンプルプログラムをどう改変すればよいのでしょうか?

通常、エクセルでテキストファイルを読み込もうとすると、ウイザードが立ち上がりそれを終えると読み込めます。
私はこのウイザードで、「カンマやタブなどの区切り文字で…」を選択し、次へ。次の画面で「タブ」と「スペース」にチェックを入れます。なお、スペースにチェックを入れると、自動的に「連続した区切り文字は1文字として扱う」にチェックが入ります。
そして次へ→、完了としてテキストを読み込んでいます。

このたび、この操作が面倒なので、マクロで実行しようといろいろ調べていたら、自分のや...続きを読む

Aベストアンサー

こんにちは。

別に元のコード自体を評価するというような気持ちではありませんが、このコードは、シーケンシャルファイル用(拡張子は、.dat)にも適用できるマクロです。それで、問題は発生はしないけれども、全体的に、インポートは遅いはずです。

それと、誰もご指摘にならないようですが、元のサンプルのコードは、Excel97 用です。

Excel2000以上なら、テキストラインで、このようなことは必要ないはずです。
Call ReadLine(CurTxt, DeLimiter, rn)

Split 関数で十分なはずです。ただし、デリミタは、一つに限るので、その前に、Replace 関数で、置換しておく必要があります。

今風の書き方ではないし、プロシージャが分散しすぎて読みにくいように思います。新たに、書き直したほうがよい様な気もしてくるのですが。

記録マクロに関して、

>どうも思うのと違うため、今のところ保留にしています。
>「読み込み」と「開く」は違うみたいで、手動でやっているのと同じ結果にはなるのですが、新しいファイルが開いて、そこにテキストファイルが開かれたり…。

それは、インポートの方法が違っているからです。これは、VBAのオブジェクトで言えば、QueryTable といいますが、ワークシートでは、[外部データの取り込み]のことを指します。オプション自体は、複雑なこともありますので、記録マクロを利用するのが一番です。なお、Tab と Comma 共存の場合は、QueryTable が優れています。

VBA入門レベルでも、記録マクロと組み合わせれば可能かと思います。というか、よほど、インポート間で加工しなければ、このまま使えると思います。

例:

Sub TestMacro1()
  Dim Fname As Variant
  On Error Resume Next
  ActiveSheet.QueryTables(1).Delete 'QueryTableがあったら削除
  On Error GoTo 0
  Fname = Application.GetOpenFilename( _
  "テキストファイル (*.txt; *.csv),*.txt;*.csv", 1, "OpenTextFile")
  If VarType(Fname) = vbBoolean Then Exit Sub
'-------------------細かいオプションは、記録マクロから取り出してください。---
  With ActiveSheet.QueryTables.Add( _
    Connection:="TEXT;" & Fname, _
    Destination:=Cells(1, 1))
    .AdjustColumnWidth = False '列幅の自動調整
    .TextFileCommaDelimiter = True 'カンマ切り
    .Refresh BackgroundQuery:=False 'バックグラウンドの再入力(一回きり)
    .TextFileTabDelimiter = True 'タブデリミタあり
  End With
'-------------------
  ActiveSheet.QueryTables(1).Delete
End Sub
  

こんにちは。

別に元のコード自体を評価するというような気持ちではありませんが、このコードは、シーケンシャルファイル用(拡張子は、.dat)にも適用できるマクロです。それで、問題は発生はしないけれども、全体的に、インポートは遅いはずです。

それと、誰もご指摘にならないようですが、元のサンプルのコードは、Excel97 用です。

Excel2000以上なら、テキストラインで、このようなことは必要ないはずです。
Call ReadLine(CurTxt, DeLimiter, rn)

Split 関数で十分なはずです。ただし、デリミ...続きを読む

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

QExcelでtxtファイルをVBAで読み込む方法

スペース区切りのテキストファイル(拡張子はtxt)が有ります。
データは、数字ですが上桁には0が入っています。
00001 0003 010222 302033 00025
等のデータです。
このファイルを、ウイザードを使わずにVBAにて直接文字列(テキスト)として読み込むコマンドを失念してしまいました。
教えて下さい。宜しくお願い致します。

Aベストアンサー

こんばんは。#2 Wendy02です。
>ファイル名を直接書くのではなく、「Application.FindFile」の様に
>ボックスにファイル名を並べて、選択したいと考えています。

ご質問なのかは分かりませんが、

Dim FileName As Variant 'String型なら、FileName ="False"
FileName = Application.GetOpenFilename("Text ファイル(*.txt),*.txt")
If VarType(FileName) = vbBoolean Then
  Exit Sub
End If

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

QEXCEL VBA セルからファイル名を読み込む

EXCEL VBAについての質問です
同じ処理を名前の違う複数のファイルで行いたいと思っています
そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。
良い方法を教えてください。


Workbooks("200809.csv").Activate
Sheets("200809").Select
Range("C3:C33").Copy
Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい
Sheets("報告書").Select
Range("G5:G35").Select
ActiveSheet.Paste
Windows("200809.csv").Activate
Range("K3:K33").Copy
Windows("○○.xls").Activate’←ここ
Sheets("報告書").Select
Range("I5:I35").Select
ActiveSheet.Paste
Workbooks("200809.csv").Close SaveChanges:=False

よろしくお願いします。

EXCEL VBAについての質問です
同じ処理を名前の違う複数のファイルで行いたいと思っています
そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。
良い方法を教えてください。


Workbooks("200809.csv").Activate
Sheets("200809").Select
Range("C3:C33").Copy
Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい
Sheets("報告書").Se...続きを読む

Aベストアンサー

No.1です。
追加質問の件ですが、もともとのソースの
Sheets("報告書").Select
の"報告書"を、セルから取得したいという様な意味でしょうか?
それならまったく同様に↓と、なります(Sheet1のA3にある場合)
Sheets(ThisWorkbook.Sheets(1).Range("A3")).Select

ThisWorkbook.Sheets(1).Range("A3") これが、
ThisWorkbook:このマクロがあるブックの、
Sheets(1):1枚目のシートの、
Range("A3"):A3セルの値
を、指しています。

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

QExcelでCSVファイルを読み込むとき

ExcelでCSVファイルを読み込むとき、0(ゼロ)で始まる数字の文字列を正しく読み込むためには、どうすればいいのでしょうか

たとえば次のようなCSVファイルを読み込むと
先頭の0が省かれてしまいます。

01234,aaa[cr][lf]

これがダメ
「1234」と表示されてしまう

"01234",aaa[cr][lf]
これもダメ
「1234」と表示されてしまう


セルに「01234」と表示出来るようにするにはどうしたらいいのでしょうか?教えてください。お願いします。

ご存知の方、教えてください。

Aベストアンサー

下記をやって見ました。
0つき数字コード4桁列の先頭に「’」を付け加えた
ファイルを作ってみました。
ABC3列でA列が0つき数字コード4桁とする。
先頭0は残るが’も残り、エンタを打ちこむと’が消える。
Private Sub Form_Click()
Dim a(10)
Open "c:\My Documents\a11.csv" For Input As #1
Open "c:\My Documents\a12.csv" For Output As #2
While Not EOF(1)
Input #1, a(1), a(2), a(3)
' MsgBox a(1) & "," & a(2) & "," & a(3)
Write #2, "'" & Mid("0000", 1, 4 - Len(a(1))) _
& a(1), a(2), a(3)
Wend
Close #1, #2
End Sub
興味があれば検討してください。


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

人気Q&Aランキング