Access超初心者です。
フォームをハイパーリンク化して、エクセルで作った工事作業費を別画面で表示させようと思うのですが、Accessも最大化してしまいます。
Accessの画面はそのままで別画面にする方法がありましたら、お教えいただきたいです。
宜しくお願いします。
Private Sub 工事作業費_Click()
DoCmd.Maximize
DoCmd.RunCommand acCmdAppMaximize
End Sub
エクセルからアクセスのプロシージャーを実行する方法を教えてください。
アクセスファイル名→ファイル1.accdb
プロシージャー名→test1
なのですが、
エクセルで
Sub ACCESSのプロシージャーを実行する()
Dim OBJ As Object
Set OBJ = GetObject("C:\Users\Desktop\ファイル1.accdb")
OBJ.Application.Run OBJ.Name & "!test1"
Set OBJ = Nothing
End Sub
としたら、
実行時エラー 2517
’Microsoft Access!test1’プロシージャーが見つかりません。
になります。
test1は、アクセスの標準モジュール内に記載しています。
モジュール名も指定しないとだめなのでしょうか?
その場合のコードの書き方がわからないので教授ください。
該当のアクセスファイルは既に起動しているときもあるし、してない時もあります。
accessのVBAで、フォルダ内にあるバッチファイルを実行したいのですが、
このサイトを参考につくってみたのですが、うまくいきません。
http://blog.s21g.com/articles/1202
「実行時エラー-2147024894
Runメソッドは失敗しました。'IWshShell3'オブジェクト」
とでます。
どうしたらいいか教えてください。。。
ちなみに、そのバッチは単純にCSVを他の格納先から、ダウンロードするだけの単純なバッチです。
-------------
Private Sub バッチ実行_Click()
Dim strShellCommand As String
Dim objWSH As Object
strShellCommand = "\\~省略~類¥DL_BOPE.bat" ' バッチのあるパスとバッチファイルの名前を入れています
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run strShellCommand, vbNormalFocus, True ' 第3引数がTrueなら、同期実行
Set objWSH = Nothing
End Sub
WindowsXPに入れたApacheをコマンドプロンプトで次のようにして必要な時だけ起動しています。
CD C:\Program Files\Apache2412\Apache24\bin
httpd -k start
これをVBAのWshellでやりたいのですが、エラーになってできません
下記どちらでも「Runメソッドは失敗しました」になります
Sub Sample_WShell01()
Dim ShellObj
Set ShellObj = CreateObject("WScript.Shell")
ShellObj.Run "CD C:\Program Files\Apache2412\Apache24\bin", 0, true
ShellObj.Run "httpd -k start", 0, true
End Sub
Sub Sample_WShell01()
Dim ShellObj
Set ShellObj = CreateObject("WScript.Shell")
ShellObj.Run "C:\Program Files\Apache2412\Apache24\bin\httpd -k start", 0, true
End Sub
パスを通しておけば下記でできるのはわかってますが…
Sub Sample_WShell01()
Dim ShellObj
Set ShellObj = CreateObject("WScript.Shell")
ShellObj.Run "httpd -k start", 0, true
End Sub
パスの通ってない状態ではできないのでしょうか、教えてください
書き方だけのような気はしますが…
Windows7 Access 2013環境です。
USB接続したハードディスク内のファイルリストを作成しようとしています。
ハードディスクはNTFSフォーマットです。
ボタン1をクリックしたとき、テーブル1をソースにしたフォーム1に
ファイル名を書き出していくようにしました。
ドライブ内のサブフォルダを選択すると、プログラムは正常に作動するのですが
ドライブ直下を指定すると、実行時エラー 70 "書き込みできません"
が発生します。
NTFSのアクセス権は、管理者でログインしているので、システム関連のフォルダ
System Volume Information
$RECYCLE.BIN
以外は問題ありません。
どこに問題があるのでしょうか。もし、システム関連のフォルダが
引っかかっているとしたら、その回避方法についても
具体的にご教授願います。
↓エラー箇所↓
--------------------------------------------------------------
For Each subfolder In folder.SubFolders
--------------------------------------------------------------
↓作成したプログラム↓
--------------------------------------------------------------
Private Sub ボタン_1_Click()
Dim dlg As FileDialog
Dim fold_path As String
Dim strTargetDir As String
DoCmd.GoToRecord acDataForm, "F0001_フォーム1", acNewRec
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = False Then Exit Sub
fold_path = dlg.SelectedItems(1)
strTargetDir = fold_path
Call FolderSearch(strTargetDir)
MsgBox "終了"
Set dlg = Nothing
Else
End If
End Sub
Public Sub FolderSearch(strTargetDir As String)
Dim fso As Object
Dim folder As Object
Dim subfolder As Object
Dim file As Object
Dim objFilsSys As Object
Dim objDrive As Object
Dim strDriveLetter As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(strTargetDir)
strDriveLetter = Left(strTargetDir, 1)
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objDrive = objFileSys.GetDrive(strDriveLetter)
For Each subfolder In folder.SubFolders ←エラー箇所
FolderSearch subfolder.Path
Next subfolder
For Each file In folder.Files
With file
Me.ボリューム名 = objDrive.VolumeName
Me.ファイル名 = file.Name
Me.ファイルパス = folder.Path
Me.ファイルサイズ = folder.Size
DoCmd.GoToRecord acDataForm, "F0001_フォーム1", acNewRec
End With
Next file
Set objDrive = Nothing
Set fso = Nothing
Set folder = Nothing
End Sub
エクセルvbaで他のエクセルファイルを読み取り専用で開きたいのですが
「読み取り専用で!」とするにはどうすればいいですか?
今のままだとエラーになります。
-------------------------
Sub a()
Set App = CreateObject("Excel.Application")
Set xlBook = App.Workbooks.Open(MyFileName)
With App
.Visible = True
.ReadOnly '実行時エラー438
End With
Set App = Nothing
End Sub
Windows7 Access 2013環境です。
USB接続したハードディスク内のファイルリストを作成しようとしています。
ハードディスクはNTFSフォーマットです。
ボタン1をクリックしたとき、テーブル1をソースにしたフォーム1に
ファイル名を書き出していくようにしました。
ドライブ内のサブフォルダを選択すると、プログラムは正常に作動するのですが
ドライブ直下を指定すると、実行時エラー 70 "書き込みできません"
が発生します。
NTFSのアクセス権は、管理者でログインしているので、システム関連のフォルダ
System Volume Information
$RECYCLE.BIN
以外は問題ありません。
どこに問題があるのでしょうか。もし、システム関連のフォルダが
引っかかっているとしたら、その回避方法についても
具体的にご教授願います。
↓エラー箇所↓
--------------------------------------------------------------
For Each subfolder In folder.SubFolders
--------------------------------------------------------------
↓作成したプログラム↓
--------------------------------------------------------------
Private Sub ボタン_1_Click()
Dim dlg As FileDialog
Dim fold_path As String
Dim strTargetDir As String
DoCmd.GoToRecord acDataForm, "F0001_フォーム1", acNewRec
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If dlg.Show = False Then Exit Sub
fold_path = dlg.SelectedItems(1)
strTargetDir = fold_path
Call FolderSearch(strTargetDir)
MsgBox "終了"
Set dlg = Nothing
Else
End If
End Sub
Public Sub FolderSearch(strTargetDir As String)
Dim fso As Object
Dim folder As Object
Dim subfolder As Object
Dim file As Object
Dim objFilsSys As Object
Dim objDrive As Object
Dim strDriveLetter As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(strTargetDir)
strDriveLetter = Left(strTargetDir, 1)
Set objFileSys = CreateObject("Scripting.FileSystemObject")
Set objDrive = objFileSys.GetDrive(strDriveLetter)
For Each subfolder In folder.SubFolders ←エラー箇所
FolderSearch subfolder.Path
Next subfolder
For Each file In folder.Files
With file
Me.ボリューム名 = objDrive.VolumeName
Me.ファイル名 = file.Name
Me.ファイルパス = folder.Path
Me.ファイルサイズ = folder.Size
DoCmd.GoToRecord acDataForm, "F0001_フォーム1", acNewRec
End With
Next file
Set objDrive = Nothing
Set fso = Nothing
Set folder = Nothing
End Sub
EaseUS Todo Backup Free8.2でブータブルディスクを作成しようと思いましたが、作成したブータブルディスクが正常に起動しません。どのような原因が考えられるでしょうか?
UEFIは光学ドライブが起動順位1位になっており、作ったブータブルディスクは一度起動するものの、EaseUS Todo Backup Free8.2のホーム画面が表示される前に再起動を繰り返してしまいます。
OSはWin7 pro 64bit(Win8.1ダウングレード)、機種はエプソンのBTOモデルMR7300Eです。このPCのUEFIはWindows7での運用のため、「Secure Boot」「UEFI Boot」は無効になっています。BOIS相当のモードになっているはずです。
ポップアップと作業ウインドウを「はい」にした状態で
フォームにコマンドボタンを作って、
自身のフォーム名をScreen.ActiveForm.Nameで取得したいのですが
MsgBox Screen.ActiveForm.Name
なら問題なく取得できるのに、
s = Screen.ActiveForm.Name
だと、
「指定した式では、フォームがアクティブ ウィンドウである必要があります。」
になります。
Private Sub コマンド_Click()
Dim s As String
MsgBox Screen.ActiveForm.Name
s = Screen.ActiveForm.Name
End Sub
としてるのですが、
文字列として取得しているのに、なぜ変数には格納できないのでしょうか?
ポップアップと作業ウインドウを「いいえ」にすると、変数に格納できます。
QRコード読み込み後にDBに書込み、テキストボックスへ戻るプログラムを作成しているのですが、SetFocusが聞きません。
【実装したいこと】
QRコード内に、カンマ区切りのデータが入っており、QRスキャン後Sprit関数で区切りDBに登録しております。
でその際に、連続して読取出来るようにするために、「AfterUpdate」しております。
【処理】
1.txtsTiket(テキストボックス)にQR読取データを挿入
2.Sprit関数で、データを区切りDBへ書込み
3.txtsTiket(テキストボックス)へ戻る
2.までは問題ありませんが、3.のtxtsTiketへ自動で戻りません。
○コード
Private Sub txtsTiket_AfterUpdate()
'DB変数
Dim db As Database
Dim rs As Recordset
'変数定義
Dim tID As Integer
Dim aly As Variant
Dim t店舗CD As Integer
Dim t開局日 As Date
Set db = CurrentDb()
'店舗ID取得
Set rs = db.OpenRecordset("T_ステータス", dbOpenDynaset)
rs.Filter = "登録日 " = Date
t店舗CD = rs("店舗CD")
rs.Close: Set rs = Nothing
'チケットテーブルオープン
Set rs = db.OpenRecordset("T_sTiket", dbOpenDynaset)
'チケットID生成
If rs.EOF Then
tID = 1
Else
tID = DMax("sTiketID", "T_sTiket") + 1
End If
'QRデータ分割
aly = Split(txtsTiket, ",")
rs.AddNew
rs("sTiketID") = tID
rs("店舗CD") = t店舗CD
rs("Day-S-No") = aly(0)
rs("部門CD") = aly(1)
rs("科目CD") = aly(2)
rs("チケット名") = aly(3)
rs("宿泊日") = aly(4)
rs("予約通番") = aly(5)
rs("登録日") = Date
rs("登録時間") = Time
rs.Update
Me.txtsTiket.Value = Null
ここから
' Me.txtsTiket.SetFocus
' DoCmd.GoToControl "txtsTiket"
ここまで
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
End Sub
下記手法を試しましたが、両方ともうまくフォーカスが移動してくれません。
Me.txtsTiket.SetFocus
DoCmd.GoToControl "txtsTiket"
また、上記メソッドを、外部プロジージャーにしても動作しません。
DB書込み処理が終わった後、自動的にテキストボックスへ移動する方法はどうしてら良いでしょうかお教え頂けたら幸いです。