Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


162 / 500 ページ ←次へ | 前へ→

【10035】Re:フィールドのデータの一部を置き換え...
発言  小僧  - 07/11/30(金) 9:57 -

引用なし
パスワード
   ▼VBWASURETA さん:
こんにちは。

>例:
><元>
>フィールド1:XLSテスト

1フィールドに連続した半角文字が1回だけ出現した場合ですと
そのような感じで良いのですが、

>> 氏名には
>>日本XLS 一VV朗

この様に2回以上の連続した半角文字が出現した場合に
どうやって処理するのか、ですね。


その後やりたい事として、

>>> 変更テーブルには
>>> 記号  変更後記号
>>> x1    (株)
>>> x2    (有)

の様な半角文字から全角文字への変換テーブル…という事が挙げられていましたので

>>日本XLS 一VV朗

の結果が

XLSVV



XLS,VV (,以外でもなんか適当な区切り文字)

であるとその後の処理がまた面倒になるかなと…。
・ツリー全体表示

【10034】Re:フィールドのデータの一部を置き換え...
発言  VBWASURETA  - 07/11/30(金) 9:46 -

引用なし
パスワード
   ▼TAKE さん、小僧 さん:
こんにちは。

確かにわかりづらいところはありますね^^;


>XLSVV
>XA
>
>でなく、
>
>XLS
>VV
>XA

もしかするとこいうことでしょうか?

例:
<元>
フィールド1:XLSテスト

<変換後>
フィールド1:XLS
フィールド2:テスト


フィールド1には半角のみ、フィールド2には全角文字のみで、
フィールド1にある文字列を分割して、二つのフィールドに
別けるような感じでしょうか?

自分だと関数関係に弱いので定義して別けてしまいます・・・
・ツリー全体表示

【10033】Re:フィールドのデータの一部を置き換え...
発言  小僧  - 07/11/30(金) 9:34 -

引用なし
パスワード
   ▼TAKE さん、VBWASURETA さん:
こんにちは。

まだ仕様がはっきりとしないのですが、

>日本XLS 一VV朗
>東京XA 次郎


半角だけを抜き出す関数というのはありませんので、
VBWASURETA さんの仰るとおり、1文字ずつチェックする
ユーザ定義関数を作成する事になるかと思われますが、

XLSVV
XA

でなく、

XLS
VV
XA

という結果が必要になるのではないでしょうか。
それでしたら

ユーザ定義関数を使ってクエリで抽出

という考え方でなく

ワークテーブル(作業用の一時的に使うテーブル)を作って
そちらに追加していった方が良さそうな気がします。
・ツリー全体表示

【10032】Re:accessからのメーラー起動について
回答  VBWASURETA  - 07/11/30(金) 9:28 -

引用なし
パスワード
   ▼アイ さん:

こんにちは。

ここの過去の内容にbasp21というのがあります。
メーラーにこだわりがなければそちらを参照してみては?


>宛先(できれば複数)と件名(できれば固定文章+今日の日付)をつけ
>一定のフォルダ内にある一定のエクセルファイルを添付する。

因みにbasp21は色々できるコンポーネントなので、記載されてます内容は
できるはずです。(実際過去に使ってます)
・ツリー全体表示

【10031】accessからのメーラー起動について
質問  アイ  - 07/11/30(金) 9:15 -

引用なし
パスワード
   フォームからボタンを押すことによりメーラーを起動し、
宛先(できれば複数)と件名(できれば固定文章+今日の日付)をつけ
一定のフォルダ内にある一定のエクセルファイルを添付する。

といった操作を行いたいのですが、調べてみましたが
メーラーの起動、宛先、件名の部分ついては【()内の部分は無し。】
あるのですが、さらに添付ファイルをつけることができるのでしょうか?

お願いいたします。
・ツリー全体表示

【10030】Re:フィールドのデータの一部を置き換え...
発言  VBWASURETA  - 07/11/29(木) 19:23 -

引用なし
パスワード
   ▼TAKE さん:
こんにちは。

もしかするとその関数があるのかもしれませんが、
以前そのような場合は一文字ずつ見る関数を定義して抽出しました。
ただ、膨大なレコードがあるとかなりの遅さになります・・・。

例:
○モジュール
Function StrMojiChk(strwk as String) as String
 Dim Setstr As String '戻り値となる変数
 Setstr = ""
 'ここから一文字ずつ見る処理
 'バイトで見る場合はLenB(StrConv(取り出した1文字, vbFromUnicode))です
 StrMojiChk = Setstr
End Function

○クエリー
Select StrMojiChk(Field1) From Testテーブル


ような感じです。参考までに。
・ツリー全体表示

【10029】Re:フィールドのデータの一部を置き換え...
質問  TAKE  - 07/11/29(木) 18:04 -

引用なし
パスワード
   VBWASURETA さん,小僧 さん:
ありがとうございます。
うまく説明できなくてすいません。

データを変換してAccessのテーブルに置き換えたら
氏名のフィールドに全角と半角が混ざってしまい
氏名は全部全角なので半角の文字を抽出したいのです。
氏名には
日本XLS 一VV朗
東京XA 次郎
に変換されていて
まずはじめに
半角だけのデータだけ取り出し
それに対応する文字をテーブルに追加して
その文字を更新したいのです。
そのためにもまず
文字が半角か全角か判断する方法がありますか?
あればLEN関数とMID関数を使用してどうにかできそうな気がします。
よろしくお願いします。
・ツリー全体表示

【10028】Re:処理方法について
発言  VBWASURETA  - 07/11/29(木) 16:12 -

引用なし
パスワード
   ▼やすじ さん:
こんにちは。

できればもう少し詳細を書いていただけるとわかり易いですが・・・。

例えば

フォームタイマーイベントを10秒単位で呼び、
form1のテキスト1にApi_Test(Me.hWnd, "テスト")の戻り値を入れる。
そのフォームのコードと同じようにフォーム2にもApi_Test(Me.hWnd, "テスト")
を呼ぶコードがあり、フォーム1とフォーム2を同時にロードさせると
フォーム2で0の戻り値で返ってくる場合があるとか
あればわかり易いと思いますよ。
・ツリー全体表示

【10027】Re:フィールドのデータの一部を置き換え...
発言  VBWASURETA  - 07/11/29(木) 15:18 -

引用なし
パスワード
   ▼小僧 さん:
>こんにちは。

見ていて多分ですが、データに「日本(カ」というString型のデータが
あったとして、それを全角文字の「日本」を取り除いた「(カ」の
半角データだけにしたいということではないでしょうか?

例えば
置換前:フィールド1「日本(カ」
    フィールド2「東京(yu」

置換後:フィールド1「(カ」
    フィールド2「(yu」


違っていたらすみません。
・ツリー全体表示

【10026】Re:フィールドのデータの一部を置き換え...
発言  小僧  - 07/11/29(木) 14:12 -

引用なし
パスワード
   ▼TAKE さん:
こんにちは。

>データに
>日本(カ東京(yu
>ある場合
>テーブルに
>(カ
>(yu
>にしたいのです。


>>変更テーブルには
>>記号  変更後記号
>>x1    (株)
>>x2    (有)

ちょっと仕様が解りづらいのですが、
ただ単に (カ 、(yu が入力されていれば (カ 、(yu にしてしまえば良いのか、
変換テーブルが用意してあって

日本(カ
東京(yu



日本(株)
東京(有)

の様に変換したいのかによって
随分意味合いが変わってくるかと思われます。

もうちょっとやりたい事が具体的にでてくると
回答がつきやすくなるかと思われます。
・ツリー全体表示

【10025】Re:処理方法について
発言  やすじ  - 07/11/29(木) 11:58 -

引用なし
パスワード
   ▼VBWASURETA さん:

こんにちは。


>後輩がAccessのタイマーイベントを使っての処理をしていましたが、
>あまりよい結果ではありませんでした。

↑やはりそうですか・・・


>あまりどいう仕様かわかりませんが、長時間常駐型のプログラムでしょうか?

↑ある特定のフォームが立ち上がってる最中だけ動かすプログラムが作りたいです。


>あまり負荷が大きい処理を常住で動かすと.net C#でもあるのですが、

↑本音で言うと.net使えば融通が利くような気がするんですが、ソフトのメンテするのが大変そうなのと、自分以外理解できなくなりそうなので極力使いたくないです。


>複数スレッドを動かすイメージで、デッドロック状態となるようです。

↑デッドロック状態?ごめんなさい、勉強不足で分かりません^^;


投稿後もいろいろ試しては見たのですがやはり上手くいかなかったです。
プロシージャは今の自分のレベルだとまともに作れなさそうなのであまり試してはいません。
DLLプログラムは正常に動作しているのできっと上手いことプロシージャが組めればいけそうな気もするけど・・・アイデアが出ないっす
・ツリー全体表示

【10024】Re:フィールドのデータの一部を置き換え...
質問  TAKE  - 07/11/29(木) 9:51 -

引用なし
パスワード
   小僧 さん
こんにちは
すいません。丸投げにしたつもりはないのですが、
私の説明が悪かったのですいますん。

テーブルでの置き換えの考え方はわかりましたが
やはりVBAを使用して作成したいと思います。

その中で文字列に全角と半角が混合している場合半角だけを取り出す方法はあるのでしょうか?

データに
日本(カ東京(yu
ある場合
テーブルに
(カ
(yu
にしたいのです。
よろしくお願いします。
これも丸投げになってしまうのでしょうか?
・ツリー全体表示

【10023】Re:データ型のインポートエラーについて
発言  VBWASURETA  - 07/11/28(水) 10:06 -

引用なし
パスワード
   ▼小僧 さん:
こんにちは。

>マクロのワークシート変換、VBA のTransferSpreadSheet メソッドの仕様?で
>先頭行から数行のデータによりデータ型を判断させている模様です。
>(確か24行目かと…)
>
>なのでデータ行の先頭〜24行目までにひとつでも文字型のデータがあればテキスト型、
>25行目以降にしか文字型のデータがなければ数値型になってしまう、なんて事も
>ありえます。

そんな仕様があったのですか・・・。
Access仕様上の問題と思っていたので、仕方ないものだと^^;


>こちらはテキスト変換(TransferText メソッド) ではないでしょうか?

あまりAccessを知らない時期に使ったのはそのメソッドだったと思います。
今もあまり知らないですね^^;

最終的には

SELECT CStr(testfield1),CStr(testfield2) FROM [Excel 8.0;DATABASE=Book1.xls].[Sheet1$]

のようなクエリーを生成したと思います。
当時の資料がもうなくてすみません。
・ツリー全体表示

【10022】Re:処理方法について
発言  VBWASURETA  - 07/11/28(水) 9:30 -

引用なし
パスワード
   ▼やすじ さん:

こんにちは。

後輩がAccessのタイマーイベントを使っての処理をしていましたが、
あまりよい結果ではありませんでした。

あまりどいう仕様かわかりませんが、長時間常駐型のプログラムでしょうか?
あまり負荷が大きい処理を常住で動かすと.net C#でもあるのですが、
複数スレッドを動かすイメージで、デッドロック状態となるようです。

不要な処理は止め、処理途中である場合は待機させる仕組みがいるのかも知れません。
・ツリー全体表示

【10021】処理方法について
質問  やすじ  - 07/11/26(月) 15:08 -

引用なし
パスワード
   お世話になります。

今、外部から受け取ったデータ(DLLなど)を受け取っています。
そのデータをACCESSのフォーム内(常に表示)に配置したテキストボックスにデータが変化したら何もせずテキスト内のデータを同じように変化させたい。

今試してるのは、フォーム自体のイベント項目としてタイマーがあったのでそこにプログラム(DLLのプログラム)を突っ込んでいますが、表示に時差(タイマー分)が発生するのと、数値が0が入ってくることがあり正直見辛い状態になっています。
複数同じようなフォームを立ち上げているとさらに表示がひどい状態になりさらに見辛い状態になります。

上手い方法でリアルタイムに変化に合わせてテキストボックスの値も変化させる方法はないでしょうか?

良い案お持ちの方いらっしゃればお教えください。
・ツリー全体表示

【10020】Re:データ型のインポートエラーについて
お礼  ts E-MAIL  - 07/11/26(月) 9:36 -

引用なし
パスワード
   こんにちは
ご回答ありがとうございました。先頭に’をつけたら取り込めました。
ほんとはACCESSのVBAを使って取り込める法方があればいいのですが、当方初心者なので勉強していきたいと思います。

ありがとうございました。
・ツリー全体表示

【10019】Re:OpenRecordset ODBC呼出が失敗
発言  VBWASURWTA  - 07/11/23(金) 15:46 -

引用なし
パスワード
   ▼人参 さん:
こんにちは。

Oracle8はExcel VBAで試したことがあります。
この場合そのフィールドにパラメータとして渡すやり方になります。
ただExcel VBAなので同じような感じで出来るかはわかりません。
(実施していません)

Global Const ORAPARM_INPUT = 1
Global Const ORAPARM_OUTPUT = 2
Const test_Sql As String = "select test1fld from test_tbl where test1fld = :testno"

MstSeDatabase.Parameters.Add "testno", "test-1", ORAPARM_INPUT
MstSeDatabase.Parameters("testno").ServerType = ORATYPE_VARCHAR2

Set SelDynaset = MstSeDatabase.CreateDynaset(test_Sql, 0&)

ご参考までに。
・ツリー全体表示

【10018】Re:AccessでExcel操作について
発言  VBWASURWTA  - 07/11/23(金) 15:05 -

引用なし
パスワード
   ▼LUNA さん:
こんにちは。

少し訂正します。


>myXLS.Application.ActiveWindow.Visible = True

ではなく


myXLS.Windows(ファイル名).Visible = True

でした。

後、表示関係は

myXLS.Application.ScreenUpdating = True
myXLS.Application.DisplayAlerts = True

だったかと思います。

最後に

myXLS.Save

入れてご確認くださいませ。
・ツリー全体表示

【10017】Re:アクセス95から2000に移行後のエラー
発言  VBWASURWTA  - 07/11/23(金) 9:51 -

引用なし
パスワード
   こんにちは。

わかりづらい内容になってしまったようで。。

>もう一度、最初から新しく、2000の新規のデータベースから既存の95データベース>を
>そのまま(テーブル、フォーム、レポート類)をインポートして、
>やり直したほうがよろしいですか?

簡単に言えばインボートです。出来るだけAccess2000自身がコンバートしない
ようにするためにその方法をしたわけです。

Gin_IIさんが言うように一度コンバートで生じる問題を調べておいた
ほうが良いかも知れませんね。

後からだと、取り返しがつかない場合もありますから。
・ツリー全体表示

【10016】Re:アクセス95から2000に移行後のエラー
発言  Gin_II  - 07/11/23(金) 2:06 -

引用なし
パスワード
   >今なおしてる分は95から97・2000に移行しました、出来あがったと思ったらエラーが
>出始めました。
>もう一度、最初から新しく、2000の新規のデータベースから既存の95データベースを
>そのまま(テーブル、フォーム、レポート類)をインポートして、
>やり直したほうがよろしいですか?

変換の際に問題が発生するのは、ある程度パターンがあると思います。
それを事前に知ってから対処すれば、そこまで大変ではないと思います。
(最終的な確認作業は大変でしょうけど ^^; )

Access97からの資料ですが、

VBAエキスパート公式サイト - 学ぶ・教える VBAマイグレーションセンター
http://vbae.odyssey-com.co.jp/training/migration.htm

こちらなんかが参考になると思います。
・ツリー全体表示

162 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1083161
(SS)C-BOARD v3.8 is Free