質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

7877閲覧

vbscriptからaccessの標準モジュールを実行したい

MOMOTA373

総合スコア4

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/01/21 04:16

vbscriptからaccess2016の標準モジュールを実行したい

発生している問題・エラーメッセージ

関数の呼び出しが正しくありません。
コード 800A1F10

該当のソースコード

Sub Main()
Set objAccess = CreateObject("Access.Application")
objAccess.Visible = True

' DB接続文字列
strFilePath = GetCurrentDirectory() & "\DATAUPDATE.accdb"
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strFilePath & ";"

' 接続
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open strConnection

objAccess.run "TabSet" <=======ここでエラー
' 切断
objConnection.Close

objAccess.Quit
Set objConnection = Nothing
Set objAccess = Nothing
End Sub

Function GetCurrentDirectory()
Dim objShell : Set objShell = CreateObject("WScript.Shell")
GetCurrentDirectory = objShell.CurrentDirectory
End Function

Main

試したこと

補足情報(FW/ツールのバージョンなど)

Access2016 64bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2021/01/21 05:01

コードは、マークダウン形式でご提示ください。 呼出されるTabSetのコードも、最小限で構わないので、ご提示ください。
MOMOTA373

2021/01/21 05:54

Public Sub TabSet() ← Public に修正しました 'On Error GoTo ErrorTrap Dim Strpath As String Dim StrmyFileName As String Strpath = "C:\Users\nu\Documents\タブ区切7に変更\in" Set myFileSystem = CreateObject("Scripting.FileSystemObject") Set myFolder = myFileSystem.GetFolder(Strpath) DoCmd.SetWarnings False For Each myFile In myFolder.Files If InStr(myFile.Name, "aaa_") > 0 Then DoCmd.RunSQL "DELETE * FROM T_In" DoCmd.TransferText acImportDelim, "In定義", "T_In", myFile StrmyFileName = myFile.Name DoCmd.TransferText acExportDelim, "Out定義", "T_In", Strpath & "\" & StrmyFileName End If Next ' MsgBox "end" End_Proc: DoCmd.SetWarnings True Set myFileSystem = Nothing Set myFolder = Nothing End ErrorTrap: 'エラーNOとエラーの詳細を表示 MsgBox Err.Number & ":" & Err.Description, vbOKOnly + vbCritical, " TabSet" Resume End_Proc End Sub
YT0014

2021/01/21 06:01

質問は修正できます。 上記コードは、質問を編集して、質問欄に追記してください。
guest

回答2

0

ベストアンサー

Access本体に、データベースが指定していないのが原因かと思います。

VBScript

1 ' DB接続文字列 2 strFilePath = GetCurrentDirectory() & "\DATAUPDATE.accdb" 3 ' Accessにデータベースを開かせる 4 objAccess.OpenCurrentDatabase strFilePath

なお、ADOでの接続は不要だと思われます。

Access 2007 VBA を VBS から実行する

投稿2021/01/21 05:06

YT0014

総合スコア1708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/01/21 05:21

まずは、これですね。
MOMOTA373

2021/01/21 05:54

ありがとうございます。5行目に指定しているのですが。。
YT0014

2021/01/21 06:06

objConnectionはopenしていますが、これは、objAccessとは無関係に、DBソースとして接続しているだけです。その為、objAccessは、DBなしの状態を維持していると思われます。
MOMOTA373

2021/01/21 06:44

strFilePath = GetCurrentDirectory() & "\DATAUPDATE.accdb" objAccess.OpenCurrentDatabase strFilePath 上記に変更して上手くいきました。ありがとうございました!(質問の編集方法がわからずすみません。)
guest

0

下記の点を確認してください。

  • TabSetプロシージャは、標準モジュールに記述しているか。
  • TabSetプロシージャは、Publicで宣言しているか。

投稿2021/01/21 04:51

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MOMOTA373

2021/01/21 05:49

ありがとうございます。標準モジュールです。Public になってなかったので、修正しましたが結果は同じでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問