Access VBA質問箱 IV

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

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


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

【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 -

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

【13275】Re:タブオーダーが上手く行かない
お礼  朕国開園  - 19/1/18(金) 14:13 -

引用なし
パスワード
   自己解決できました。

フォーカスが外れた際に、最終レコードでなければ次のレコードに移動する処理が妙な動き方をして3列目からフォーカスされていたようです。

フォーム起動時に一度(二列目フォーカス)、タブキーでの移動で一度(3列目フォーカス)の様に動いていたみたいです。

該当箇所のソースを消したら想定通りに動くようになりました。
・ツリー全体表示

【13274】Re:タブオーダーが上手く行かない
回答  hatena  - 19/1/18(金) 10:48 -

引用なし
パスワード
   ▼朕国開園 さん:
>サブフォームは2行から9行ほどの単票形式の表で、チェックボックスがあります。

「単票形式の表」というのがよくわからない。

単票フォームに、表のようなレイアウトでテキストボックスやチェックボックスが配置されているということでしょうか。
それとも、
「帳票フォームの表形式」で、「レコード数が2件から9件ほどある」ということなのでしょうか。

>タブを押下した場合に、1行目のチェックボックスにフォーカスを移動したいのですが、何故か3行目のチェックボックスにフォーカスされます。

フォーカスがどこにあるときにタブを押下した場合のことですか。
メインフォーム上のコントロールですか。
サブフォーム上のコントロールですか。

>Me.処理表_サブフォーム.SetFocus
>DoCmd.GoToRecord , , acFirst
>
>と挟んでも一つ前のコントロールからフォーカスを移動すると3行目にフォーカスされてしまいます。

このコードはどこのどのイベントに記述していますか。


>また、一度フォーム内のすべてのコントロールをタブで遷移し、二週目の移動を行う際は1行目からフォーカスされます。

これもどのフォームのことをいっているか不明です。
1行目というのは先頭レコードということですか。

あいまいな部分がおおすぎます。こちらからはそちらのフォームは見えないので、
見えない人にも伝わるように説明しましょう。

あと、サブフォームのタブオーダーの設定がどうなっているかも説明してください。
・ツリー全体表示

【13273】Re:GetOpenFileNameが動かない。
回答  亀マスター  - 19/1/16(水) 22:37 -

引用なし
パスワード
   これが参考になるのではないでしょうか。

Access2010(64)でのGetSaveFileName(comdlg32.dll)使用方法
ht tps://social.msdn.microsoft.com/Forums/ja-JP/418567cc-7c76-472c-9073-d7712a20787a
/access2010641239112398getsavefilenamecomdlg32dll20351299922604127861?forum=vbajp

※投稿の制限でURLの途中に改行が入っているのでつっくけてください。
・ツリー全体表示

【13272】GetOpenFileNameが動かない。
質問  ユサ E-MAIL  - 19/1/16(水) 21:13 -

引用なし
パスワード
   これまで、Win7+Access2010(32bit)上で動いていたAccessファイルを、
Win10+Access2016(64bit)で起動したところ、ファイル選択ダイアログが
表示されなくなってしまいました。
VBAにおいて、
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
が動かないようです。
原因として、VBEにおいてツール⇒参照設定で、適切なライブラリファイルを
選べば解決するように思うのですが、どれを選べばいいのかわかりません。
他に原因と思われることもありましたら教えてください。
・ツリー全体表示

【13271】タブオーダーが上手く行かない
質問  朕国開園  - 19/1/16(水) 15:19 -

引用なし
パスワード
   サブフォームは2行から9行ほどの単票形式の表で、チェックボックスがあります。
タブを押下した場合に、1行目のチェックボックスにフォーカスを移動したいのですが、何故か3行目のチェックボックスにフォーカスされます。

Me.処理表_サブフォーム.SetFocus
DoCmd.GoToRecord , , acFirst

と挟んでも一つ前のコントロールからフォーカスを移動すると3行目にフォーカスされてしまいます。

また、一度フォーム内のすべてのコントロールをタブで遷移し、二週目の移動を行う際は1行目からフォーカスされます。

どうすれば一週目から1行目のチェックボックスにフォーカスさせられるでしょうか?
・ツリー全体表示

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