Access VBA質問箱 IV

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

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


1 / 500 ページ 前へ→

【13295】CSV→Access インポートについて
質問  まやまや  - 19/7/19(金) 16:08 -

引用なし
パスワード
   こんにちは。はじめまして。
超初心者の質問失礼します。

今、Access2016 で、CSVファイルをAccess内の既存のテーブルに追加するプログラムを作っています。
ここで自分で調べて(こちらの過去ログなども見ながら)
trancefartxtを使った文までたどり着きました。
しかし、第二因数の定義を入力したところで、
実行時エラー31519
このファイルをインポートできません
と出てしまいます。

ヘルプ等で確認したところ、どうもCSVをインポートできる拡張子ではないとのことですが、ウィザードを使った主導のインポートは問題なく行えました。
(定義はこのウィザードで作成したものを使っています)

このエラーが起こるのは何故でしょうか。
そして、そもそもこの方針は最初に申し上げた目的に対して妥当なものなのでしょうか。
ご回答よろしくおねがいいたします。
・ツリー全体表示

【13294】ID検索について
質問  がんぼ  - 19/7/12(金) 15:04 -

引用なし
パスワード
   アクセスで単票フォームを作成しました。

ページヘッダーに表示させたいレコードを検索するよう
テキストボックスを配置し、プロパティの更新後処理に
「埋め込みマクロ」⇒「オブジェクトからレコードの検索」を選択し
Where条件式に
 ="[ID] = " & Str(Nz([Screen].[ActiveControl],0))
を記載しました。

過去に同じような単票フォームを作成した際はこれで問題なく
検索されていたのですが、今回はレコードが変更されません。
一瞬、レコードが変わるような画面のちらつきがあるので検索を行って
いるようではあります。エラーは出ません。

また、わからないのが検索用のテキストボックスをカット&ペーストで
詳細部分に張り付けて検索してみると正常に動作します。

フォームヘッダーに配置するとダメなようです。

皆様のお知恵をお貸しいただけると幸いです。
・ツリー全体表示

【13293】Re:SQLの規定値設定時に実行時エラー329...
質問  たらっち  - 19/6/21(金) 18:56 -

引用なし
パスワード
   よろずや様

ご回答ありがとうございます。
以下のようにADOを使用してSQLを実行したら、
cn.Execute strSQLのところで(SQL実行時)
「80004005 テーブル レベル入力規則の 構文エラー。」
とエラーがでました。
strSQL内の"DEFAULT 0" を消すとエラーなく実行され、当該フィールドは数値型に変わります。
何か設定が悪いのか、プロバイダが違うのか...。
原因お分かりでしたらお教えください。よろしくお願いいたします。

↓以下ソース一部

Dim strCnString As String
Dim cn As ADODB.Connection
strCnString = "Provider=Microsoft.ACE.OLEDB.12.0;"
strCnString = strCnString & "Data Source=" & Application.CurrentDb.Name

Set cn = CreateObject("ADODB.Connection")
cn.Open (strCnString)

strSQL = "ALTER TABLE [T_106100] ALTER COLUMN [" & strYMDFld(i) & "] INTEGER DEFAULT 0;"
    cn.Execute strSQL
Set cn = Nothing


▼よろずや さん:
>DEFAULT ステートメントは、Access OLE DB プロバイダーおよび ADO 経由でのみ実行できます。 Access の [SQL ビュー] ユーザー インターフェイスからこのステートメントを使用すると、エラー メッセージが返されます。
>
>ht tps://docs.microsoft.com/ja-jp/office/vba/access/concepts/structured-query-language/modify-a-table-s-design-using-access-sql
>
>だそうです。
・ツリー全体表示

【13292】Re:SQLの規定値設定時に実行時エラー329...
回答  よろずや  - 19/6/19(水) 22:42 -

引用なし
パスワード
   DEFAULT ステートメントは、Access OLE DB プロバイダーおよび ADO 経由でのみ実行できます。 Access の [SQL ビュー] ユーザー インターフェイスからこのステートメントを使用すると、エラー メッセージが返されます。

ht tps://docs.microsoft.com/ja-jp/office/vba/access/concepts/structured-query-language/modify-a-table-s-design-using-access-sql

だそうです。
・ツリー全体表示

【13291】Re:SQLの規定値設定時に実行時エラー329...
回答  よろずや  - 19/6/19(水) 21:52 -

引用なし
パスワード
   ▼たらっち さん:
>テーブル作成クエリだと、全てのフィールドが作成されない場合があるので、あらかじめ全てのフィールド(11ヶ月分のフィールド)を整数型(integer)で作成しておきます。
>
>strYMDFld(i)は配列です。上の例だとstrYMDFld(0)="2019/01/01"、strYMDFld(10)="2019/11/01"です。

DoCmd.RunSQL "ALTER TABLE [T_106100] ADD COLUMN [" & strYMDFld(i) & "] INTEGER DEFAULT 0;"

ではいかがでしょう?
・ツリー全体表示

【13290】SQLの規定値設定時に実行時エラー3293が...
質問  たらっち  - 19/6/19(水) 14:52 -

引用なし
パスワード
   テーブル作成クエリで作成したテーブル(フィールド名に、現在月マイナス5ヶ月〜プラス5ヶ月がついています(現在が2019年6月だとすると[2019/01/01]〜[2019/11/01])。
テーブル作成クエリだと、全てのフィールドが作成されない場合があるので、あらかじめ全てのフィールド(11ヶ月分のフィールド)を整数型(integer)で作成しておきます。

strYMDFld(i)は配列です。上の例だとstrYMDFld(0)="2019/01/01"、strYMDFld(10)="2019/11/01"です。
DoCmd.RunSQL "ALTER TABLE [T_106100] ALTER COLUMN [" & strYMDFld(i) & "] INTEGER DEFAULT 0;"
というところでエラー3293「ALTER TABLE ステートメントの構文エラー」がでます。
エラーの原因が特定できず困っています。
分かる方、お力添えお願いいたします。
・ツリー全体表示

【13289】Re:エクセルファイルを範囲を指定して、...
回答  hatena  - 19/6/3(月) 11:04 -

引用なし
パスワード
   HasFieldNames引数をFalseに指定する(見出し行を使用しない)と、フィールド名は、F1, F2 ・・・と自動でつきます。

TransferSpreadsheet には、クエリも指定できますので、
フィールド名をエクセルに合わせたものを作成しておいて、
それにインポートすればいいでしょう。

SELECT Fild1 As F1, Fild2 As F2 ・・・
FROM テーブル名;
・ツリー全体表示

【13288】エクセルファイルを範囲を指定して、Acc...
質問  システム部  - 19/5/31(金) 10:09 -

引用なし
パスワード
   エクセルファイルをAccessの既存テーブルにインポートし、データ追加したいと考えています。

エクセルファイルの1行目は項目名なので、取り込まない。
エクセルの項目行とテーブルの項目名は相違している。
エクセルのA列B列は取り込まず、C列からK列までを取り込みたい。
(エクセルの3列目がテーブルの1列目にデータ追加されるようにしたい。)
取り込みの最終行はその時々で変わる。

以下を考慮し、VBAを記述しましたが、うまくいきません。

DoCmd.TransferSpreadsheet
    acImport, acSpreadsheetTypeExcel9,
    "テーブル名", "Excelファイル名", False, "シート名$C2:K"


「実行時エラー2391
貼り付け先のテーブルにはF1フィールドがありません」
というエラーが表示されます。


エクセルの項目名をテーブルの項目名ど同じにはしたくありません。
項目名が違ってもエクセルの範囲を指定して取り込むことは可能でしょうか?
ご教授願います。
・ツリー全体表示

【13287】Re:Accessフォーム内のプロパティを検索
お礼  かけだしパパ  - 19/4/13(土) 23:31 -

引用なし
パスワード
   ご教示ありがとうございます!
この方法でなんとかいけそうです。ありがとうございました。
・ツリー全体表示

【13286】Re:Accessフォーム内のプロパティを検索
回答  亀マスター  - 19/4/10(水) 19:06 -

引用なし
パスワード
   こんな感じでどうでしょう。
開いていないフォームのコントロールにはアクセスできないので、
まずCurrentProject.AllFormsでデータベースファイル中の全ての
オブジェクトを抽出するところから始めています。

Sub test()

Dim f As AccessObject
Dim c As Control

'データベース上の全てのオブジェクトから
For Each f In CurrentProject.AllForms
  'フォームを見つけ
  If f.Type = acForm Then
    'そのフォームを開き
    DoCmd.OpenForm f.Name
    'フォーム中のコントロールから
    For Each c In Forms(f.Name).Controls
      'テキストボックスを見つけ
      If c.ControlType = acTextBox Then
        'そのコントロールソースに「0.08」を含んでいたら
        If InStr(c.ControlSource, "0.08") <> 0 Then
          'イミディエイトウィンドウにフォーム名と
          'テキストボックス名とコントロールソース式を出力
          Debug.Print f.Name & ":" & c.Name ":" & c.ControlSource
        End If
      End If
    Next c
    DoCmd.Close acForm, f.Name
  End If
Next f

End Sub

ここではイミディエイトウィンドウに結果を出力していますが、ここはテキストファイルに出力するなと、Replaceで「0.08」を「0.1」に置換するなと、必要に応じて変更してください。
・ツリー全体表示

【13285】Accessフォーム内のプロパティを検索
質問  かけだしパパ  - 19/4/9(火) 22:41 -

引用なし
パスワード
   環境:windows10+Access2013
他者が開発した稼働中のMDBシステム

例えば、フォームにテキストボックス「消費税」があり、そのテキストボックスのプロパティ「コントロールソース」に消費税率を含む下記のような式を記述があったとします。
=合計金額*0.08
このような「コントロールソース」に含まれる"0.08"の文字列を、プロシージャ内の検索にある「カレント プロジェクト」のようにMDBファイル内に存在するすべてのフォーム内の、コントロールのコントロールソース内の式を検索して見つけ出す方法はないでしょうか?

データベース構造の解析>テキストファイル等でエクスポートするとページ数が多く、作業効率が悪いので別な手段はないでしょうか?
・ツリー全体表示

【13284】Re:ホーム上でホーカス取得時、フールド...
回答  hatena  - 19/4/9(火) 14:44 -

引用なし
パスワード
   条件付き書式を使っても可能です。

条件付き書式で、
「次のセルのみ書式設定」で「フォーカスのあるフィールド」を選択して、
背景色をお好みのものに設定してください。

設定したいフィールド(テキストボックス)を複数選択してから、条件付き書式を設定すれば、1回の設定で済みます。
・ツリー全体表示

【13283】Re:ホーム上でホーカス取得時、フールド...
お礼  Blue impact E-MAIL  - 19/4/8(月) 22:03 -

引用なし
パスワード
   早速教えていただきありがとうございます。早速実施してみます。
・ツリー全体表示

【13282】Re:ホーム上でホーカス取得時、フールド...
回答  亀マスター  - 19/4/8(月) 21:14 -

引用なし
パスワード
   ホーム→フォーム
ホーカス→フォーカス ですよね?

フィールドの色とは、テキストボックスの色のことでしょうか。
でしたら、設定したいテキストボックスの「フォーカス取得後」イベントで

テキストボックス名.BackColor = RGB(255, 255, 0)
(※RGBの値は設定したい色。この例では黄色)

「フォーカス喪失後」イベントで
テキストボックス名.BackColor = RGB(255, 255, 255) '背景色を白にする場合
テキストボックス名.BackStyle = 0 '背景色を透明にする場合

とすればいいです。
・ツリー全体表示

【13281】ホーム上でホーカス取得時、フールドの背...
質問  Blue impact E-MAIL  - 19/4/8(月) 20:16 -

引用なし
パスワード
   ホーム上でホーカス取得時、フールドの背景色を変えたい。
フィールドがたくさんあるので、フーカスがあるフィールドの背景色を変えて、どこにホーカスがあるか、わかりやすくしたい。イベントのマクロを利用すれば、可能だと思うのですが、ご存知の方、教えてください。
・ツリー全体表示

【13280】Re:excleデータインポートFileNameをイン...
お礼  キム E-MAIL  - 19/3/29(金) 11:11 -

引用なし
パスワード
   ありがとうございます。基礎が全く分かっていない事を痛感
しました。
・ツリー全体表示

【13279】Re:excleデータインポートFileNameをイン...
回答  よろずや  - 19/3/28(木) 11:15 -

引用なし
パスワード
   DoCmd.TransferSpreadsheet acImport, , "T-天気・稼働内容転送", "filename ", True, "天気・稼働内容転送!"

DoCmd.TransferSpreadsheet acImport, , "T-天気・稼働内容転送", filename, True, "天気・稼働内容転送!"
・ツリー全体表示

【13278】excleデータインポートFileNameをインポ...
質問  キム E-MAIL  - 19/3/27(水) 14:42 -

引用なし
パスワード
   excleデータインポートDoCmd.TransferSpreadsheet acImportのFileNameをインポート日付からフルパスを入力しましたが。途中MsgBoxには表示されますが。
FileNameにフルパスが入りません。

VBA初心者でどうしていいかわかりません。
よろしくお願い致します。

Private Sub Excelのデータ読み込む_Click()
Dim intRtn As VbMsgBoxResult
  intRtn = MsgBox("APK・AMF砂処理日報終了しましたか?。" & vbLf & "Excelデータを転送しますか?", vbYesNo + vbQuestion, "Excelデータ転送確認")
 If intRtn <> vbYes Then
  MsgBox "転送をキャンセルしました。"
  End
 End If
Dim dtNow As String
Dim filename As String, filename1 As String, filename2 As String, filename3 As String, PathName As String, filename4 As String, pos As Long
  dtNow = Form_F_メインフォーム.インポート日付
  Me.txt年 = Year(dtNow)
  Me.txt月 = Month(dtNow)
  Me.txt日 = Day(dtNow)


  pos = InStrRev("C:\Users\研\Desktop\砂処理日報\APK・AMF砂処理日報.xlsm", "\")
  PathName = Left("C:\Users\研\Desktop\砂処理日報\APK・AMF砂処理日報.xlsm", pos)
  filename4 = Mid("C:\Users\研\Desktop\砂処理日報\APK・AMF砂処理日報.xlsm", pos + 1)
  If IsDate(Form_F_メインフォーム.インポート日付) = True Then
    filename1 = Year(dtNow)
    filename2 = Month(dtNow)
    filename3 = Day(dtNow)
  End If
    filename = PathName & filename1 & "年砂処理日報" & "\" & filename1 & "." & filename2 & "月" & "\" & "砂処理日報" & "\" & filename1 & "." & filename2 & "." & filename3 & "\" & filename4
    
     MsgBox filename
DoCmd.TransferSpreadsheet acImport, , "T-天気・稼働内容転送", "filename ", True, "天気・稼働内容転送!"
 DoCmd.OpenQuery "Q-天気・稼働内容差分転送", acViewNormal, acEdit
 DoCmd.OpenQuery "Q-天気・稼働内容転送削除", acViewNormal, acEdit

 DoCmd.SetWarnings True
  Table削除

MsgBox ("データ取り込みました。")
 Exit Sub
End Sub
・ツリー全体表示

【13277】VBAクラスオブジェクトの解放が出来ない
質問  ちび太  - 19/3/7(木) 14:46 -

引用なし
パスワード
   Access2013を使っています。

使わないフォーム(テストフォーム)を削除したのですが、VBAのクラスオブジェクトに削除済みのフォームが残ったままになり、"フォーム名'テストフォーム'が正しくないか、存在しないフォームを参照しています"といったエラーが出るようになりました。
削除しようと右クリックしたのですが"form_テストフォームの解放"はグレーになり選べませんでした。
削除していないフォーム名も同じようにグレーアウトしています。

因みに、オブジェクトの表示→その他→コード保持→いいえ に変更してもグレーアウトのままでした。

何か解決策はありますでしょうか。
・ツリー全体表示

【13276】Re:トランザクションの状態判定
お礼  ななしのゴンベ  - 19/1/21(月) 13:23 -

引用なし
パスワード
   ありがとうございます!おかげで解決しました!
・ツリー全体表示

1 / 500 ページ 前へ→
ページ:  ┃  記事番号:
1041729
(SS)C-BOARD v3.8 is Free