シーケンシャルアクセスについて教えてください。

テキストファイルの内容が...
***************************************************
aaa bbb ccc ddddd eeeee
aあ  bbb ccc ddddd eeeee
***************************************************

空白の部分(aとbの間)にはタブが入っています

このテキストファイルをアクセス2000において
テーブルにインポートする場合

Open...AS #1 'テキストオープン
set ... 'データベース・テーブルオープン
input #1 rireki

Mytable![項目名] = Mid(rireki, 1, 3)

上のような感じでテキストのデータをテーブルに取り込もうとすると
2行目の"aあ"の"あ"が全角なので"aあ"以外の空白も取り込んでしまいます

どうすれば全角を半角2桁として取り出すことが出来ますか?
宜しくお願い致します。

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

A 回答 (2件)

こんにちは。

maruru01です。

区切りが必ずタブなら、
文字数ではなく区切りごとに取り出す方法はどうでしょうか?
これは、Splitという関数で、配列に格納出来ます。

Dim Youso As Variant

Youso = Split(rireki, vbTab)

これで、2行目なら
Youso(0) = aあ
Youso(1) = bbb
・・・以下略
と入ります。

また、単純にテキストファイルのデータをテーブルに取り込むだけでしたら、
インポート定義を作成して、ファイルのインポートをするという方法もあります。

DoCmd.TransferText acImportDelim, インポート定義名, テーブル名, テキストファイル名

なおインポート定義の作り方は、実際にメニューの[ファイル]→[外部データの取り込み]→[インポート]でテキストファイルのインポートウィザードを起動させます。
そして、[設定]に入ってそこで定義の詳細設定をして[保存]します。(実際にインポートまでする必要はありません。)
この時の保存名を、文字列で上の式の"インポート定義名"に使用します。
ちなみにこの場合はテーブルのレコードセットを開く必要はありません。
では。
    • good
    • 0

全角を半角2桁として計算したいのであれば、


Mid(rireki, 1, 3)

MidB(rireki, 1, 3)

の関数を使えば良いと思いますが。
一度ヘルプを確認してみて下さい。
    • good
    • 0

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

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

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

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

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3コピー元ワークシート3

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = Workbooks.Add

'ここからが実際のコピー処理です。
'単純に3回コピーメソッドを呼び出して3回コピーしています。
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)
masterSh.Copy before:=copyWb.Sheets(1)

End Sub

今どういうコードを書いているのか不明なので、とりあえず
「1つのシートを別のブックに複数回コピーする」ための参考ソースを書きます。
コピー元のブックに下記ソースを貼り付けて実行してもらえば
新規ブックにコピー元のシートが3枚コピーされると思います。
(新規ブックを追加しているのでシート数は3枚より多くなります)

Sub copySheet()
Dim masterWb As Workbook
Dim masterSh As Worksheet
Dim copyWb As Workbook

Set masterWb = ThisWorkbook
Set masterSh = masterWb.Sheets(1)
Set copyWb = W...続きを読む

Qテキストに’の入っているデータをクエリーで処理したらエラーに..

テキストからMDBにデータを取込む際に、テキストの項目に、’(シングルフォーテーション)が入ってきて、INSERT文のクエリーで区切りが狂ってしまい、エラーが出てしまいます。
’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ) が入ってきても対応できる良い手段(記述方法)はないでしょうか?

Aベストアンサー

だいぶ遅いので解決、対応済みかもしれませんが
INSERTで、なくてレコードセットをして
AddNewしてあげれば取り込めると思います。
しかし、パフォーマンスの面や、
取り込んだデータを利用する場合に
INSERTやUPDATE、WHERE 条件に使用できない点があります。
以上のことを考えると、’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)などは、最初から2バイト文字で作成してあげる
か、データ上では2バイト文字で扱うを原則に、データベース設計を行い、
取込の際に念のため’(シングルフォーテーション)または ”(ダブルフォーテーション)または ,(カンマ)をチェックし
2バイト文字に変換してしまうのがいいと思います。

QEXCEL VBA ワークシートのコピーについて

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピー先BOOKに

         ワークシート名
ワークシート1 処理1ワークシート 
ワークシート2 処理2ワークシート
ワークシート3 処理3ワークシート

という具合にワークシートを複数コピーしたいのですが

処理ごとにデータを代入し、コピー処理はできるのですが。

コピー先BOOK

ワークシート3 処理3ワークシート

だけしかコピーされてないBOOKが作成されます。
上書きされているのだと思われます。

対処法が調べましたが見つけられていません。

すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

seaclearsky8です。

一つのブックに何枚ものワークシートを追加して保存するVBAについて
ご教授、よろしくお願いします。

コピー元 

MASTER Book MASTER Workseets

コピー先

Copy Book copy Worksheets


コピー元にはワークシートがMASTERワークシートの一枚しかありません。

その一枚のワークシートに値をVBAで入れていき処理し

コピー先のコピーBOOKにワークシートをコピーしていきたいです。

しかし、MASTERBOOKの処理が何通りかあり、

コピー元の一枚のワークシートに
処理別にデータを写し

コピ...続きを読む

Aベストアンサー

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめる。
 新規ブックのオープンをtestwriteを呼ぶ前に1度だけ行い、
 testwriteの中ではその新規ブックに対してシートを追加していく。
 そしてtestwriteの処理が全部終わったら、
 新規ブックの全シートを1度に「記録シートYYYY/MM/DD.xls」にコピーする。

それでも駄目でしたら、以下の回答No.1を試してみてください。
http://oshiete.goo.ne.jp/qa/1822561.html

> 配列にワークシートのオブジェクトを入れることとか可能なのでしょうか?

それは多分できないと思います。


> 複数のセル・シートを何回もコピーする場合にでるらしいです。

多分、メモリをたくさん使っちゃってるせいでしょうね。
まず、メモリ使用を減らすようにしましょうか。

・testwriteの最後にオブジェクト変数のメモリ解放を行う。
 具体的には以下のように書く。もうやってたらすみません。
Set cbook = Nothing
Set mastersheet = Nothing
・testwriteの中でのブックオープンおよび保存をやめ...続きを読む

QVB.net テキストボックスの入力制限全角のみ

VB.net初心者です
テキストボックスの入力制限で全角文字のみを実現させたいのですが、いろいろ検索して調査してもわかりません。
どなたかアドバイスをいただけると助かります、よろしくお願いします。

Aベストアンサー

強制的にIMEをONにする(VBAでの処理例ですが)
http://officetanaka.net/excel/vba/tips/tips16.htm

それでもIMEを意図的に切ったり、半角に変換は可能なので
入力確定した文字を確認し、半角が入力されている場合再度入力状態へ戻すなどの処理が必要ですね

QEXCELのVBAでシートコピーをしたとき元のマクロを削除するには?

VBAのマクロでシートのコピーをしたいのですが、元のシートにはVBAのコードが含まれています。コピーするのはデータだけのコピーが必要で、マクロ自体は必要ないのですが、それを削除するコードはどのように書いたらいいのでしょうか?
どうしてもコピーしたファイルを開くと「マクロが含まれています」という確認メッセージが出てしまうのですが、それもなくしたいのです。
シートにフォームのボタンが配置されている場合も同様に、そのボタン自体をなくした状態でコピーを行いたいのですが・・・。プログラムで行うのは不可能なのでしょうか?

Aベストアンサー

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け
Sheets("Sheet1").Name = "コピー"
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = sc
ActiveWorkbook.Close
ThisWorkbook.Activate
End Sub

No2です。
サンプルコードを書いてみました。
「オリジナル」という名前のシートを別ブックとしてコピペ保存します。

Sub サンプル()
Dim sc As Integer
sc = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー
Workbooks.Add 'ブック追加
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け
Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け...続きを読む

QRst.FindFirst "名称コード" & "=" & "'101'"

タイトルのコードでは問題ないのですが、 101 を文字変数にすると「抽出条件でデータ型が一致していません」のエラーになります。この場合シングルクオーテーションはどういう意味なのでしょうか。
どうすれば良いのでしょうか。

dim Vcode as string
Vcode = "101"
Rst.FindFirst "名称コード" & "=" & Vcode

Aベストアンサー

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます。
そこで、

rst.FindFirst "フィールド名 = 'xxx'"

このようにすればOKです。
次のステップとして、xxx の部分を変数を使ってやりたい場合。
単純に変数名に置き換えると、

rst.FindFirst "フィールド名 = '変数名'"

ですが、変数を、"" の中に記述すると、文字列として扱われますので、"" の外に
出してやる必要があります。
その場合、文字列と変数をつなぐためには、& を使います。

rst.FindFirst "フィールド名 = '" & 変数名 & "'"

で、このようになります。

FindFirst や、フォームの Filter プロパティで設定する場合は、SQL文のWHERE句の
内容を設定する必要があります。

フィールド名がテキスト型の場合は、

SELECT * FROM テーブル名 WHERE フィールド名 = "xxx"

のようになります。
で、FindFirst メソッドなんかで使う場合は、

rst.FindFirst フィールド名 = "xxx"

としたいところですが、条件の部分は文字列にしないといけません。
で、

rst.FindFirst "フィールド名 = "xxx""

こうすると、

フィールド名 =

で、切れてしまいます...続きを読む

QVBAのワークシートの追加とコピーなんですが。

VBAのワークシートの追加とコピーなんですが。


sheet1の原紙をすべてコピーして、

新しくワークシートを追加してそのシートに貼り付けるプログラムを

教えてください。

Aベストアンサー

With ActiveWorkbook
  aaa = .Sheets("Sheet1").Cells(9, 4).Value 'aaaは社員
  bbb = .Sheets("Sheet1").Cells(9, 5).Value 'bbbは4月
  .Sheets("Sheet1").Copy After:=.Sheets(.Sheets.Count)
End With
ActiveSheet.Name = aaa & bbb

QVB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という
エラーメッセージが出てしまいます。

windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、
どうもダメみたいで困っています。

解決方法などご存知の方がいらっしゃいましたら、
ご教授いただけると大変助かります。

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

お世話になります。

環境はWindowsXPです。

現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。

以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。
(1).NETのDLLを作成
(2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録
(3)tlbexpコマンドで、タイプライブラリを作成
(4)VB6のプロジェクトから(3)を参照設定する
(5)VB6から.NETクラスを生成し、呼び出す
(6)プロジェクトをコンパイルし、exeを生成

...続きを読む

Aベストアンサー

Exeで使用しているiniファイルやtlbファイルを最新のに置き換えて、もう一度regasmコマンドで登録してみてはいかがでしょう。

QEXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法

 EXCEL2002で、ブック内のワークシートを他のブックに(VBA含む丸ごと)コピーして移す方法
 普通のやり方では、セルの数字、値だけで、通常は、中身の重要な"関数式"であったり、VBA等のプログラムまで、コピーされることは、ありませんので、そこまで、出来る方法を教えて下さい。

Aベストアンサー

コピー元のBookとコピー先Bookをどちらも開いて
Excel画面上に並べます(左右に並べる方が作業しやすいと思います)

Ctrlキーを押しながら、コピーしたいシートのタブ部分を
クリック長押しすると、+マークと▲マークが出てきます。
マークが出てきたら、新しいBookにドラッグ&ドロップ で
シートコピーが出来ます。

全く同じシートがコピーされ、マクロもコピーされます。

QVBScriptにて、テキストファイルAの中身を、テキストファイルBに行を指定して追加書きしたい

以下のように記述されたc:\tmp\test.txtの3行目に、
test.txt######################ここから
test1
test2
test3
test4
test5
##############################ここまで

以下のように記述されたc:\tmp\insert.txtの中身全てを追加書きして、
insert.txt####################ここから
insert1
insert2
insert3
insert4
insert5
#############################ここまで

c:\tmp\test.txtが以下のような結果になるVBScriptを作成したいです。
test.txt#####################ここから
test1
test2
insert1
insert2
insert3
insert4
insert5
test3
test4
test5
#############################ここまで

色々調べたのですがどうしても上手くいきません。
もし上記結果が得られる方法がありましたらご教授ください。

以下のように記述されたc:\tmp\test.txtの3行目に、
test.txt######################ここから
test1
test2
test3
test4
test5
##############################ここまで

以下のように記述されたc:\tmp\insert.txtの中身全てを追加書きして、
insert.txt####################ここから
insert1
insert2
insert3
insert4
insert5
#############################ここまで

c:\tmp\test.txtが以下のような結果になるVBScriptを作成したいです。
test.txt#####################ここから
test1
test...続きを読む

Aベストアンサー

#1 Wizard_Zeroです。
雑なコードですが・・・


Dim objFSO
Dim fileRead, fileWrite
Dim strTestLines
Dim i

Set objFSO = CreateObject("Scripting.FileSystemObject")

' test.txt を読み込んで配列化
Set fileRead = objFSO.OpenTextFile("test.txt")
strTestLines = Split(fileRead.ReadAll, vbCrLf)
fileRead.Close

' inset.txt を読み込み、test.txt を書き込み(上書き)で開く
Set fileRead = objFSO.OpenTextFile("insert.txt")
Set fileWrite = objFSO.CreateTextFile("test.txt", True)

' test.txt へ上書き
fileWrite.WriteLine strTestLines(0) ' 元の1行目
fileWrite.WriteLine strTestLines(1) ' 元の2行目
fileWrite.WriteLine fileRead.ReadAll ' insertのすべて

' 元の残り - 1行
For i = 2 To UBound(strTestLines) - 1
fileWrite.WriteLine(strTestLines(i))
Next

' 最後の1行は改行なし
fileWrite.Write strTestLines(UBound(strTestLines))

fileWrite.Close
fileRead.Close

#1 Wizard_Zeroです。
雑なコードですが・・・


Dim objFSO
Dim fileRead, fileWrite
Dim strTestLines
Dim i

Set objFSO = CreateObject("Scripting.FileSystemObject")

' test.txt を読み込んで配列化
Set fileRead = objFSO.OpenTextFile("test.txt")
strTestLines = Split(fileRead.ReadAll, vbCrLf)
fileRead.Close

' inset.txt を読み込み、test.txt を書き込み(上書き)で開く
Set fileRead = objFSO.OpenTextFile("insert.txt")
Set fileWrite = objFSO.CreateTextFile("test.txt"...続きを読む


人気Q&Aランキング