Access VBA質問箱 IV

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

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


1783 / 2272 ツリー ←次へ | 前へ→

【5309】他テーブルの削除 hiyoko 05/6/7(火) 10:02 質問[未読]
【5310】Re:他テーブルの削除 小僧 05/6/7(火) 10:28 回答[未読]
【5311】Re:他テーブルの削除 hiyoko 05/6/7(火) 10:58 質問[未読]
【5312】Re:他テーブルの削除 小僧 05/6/7(火) 11:06 回答[未読]
【5313】Re:他テーブルの削除 hiyoko 05/6/7(火) 11:14 お礼[未読]

【5309】他テーブルの削除
質問  hiyoko  - 05/6/7(火) 10:02 -

引用なし
パスワード
   アクセス初心者です。他データベースのテーブルを削除しようといろいろ検索しコードをコピーしてきました。これをマクロのプロシージャの実行の式ビルダから呼び出したいのですが、出てきません。どう直せばいいのかご教授ください。

'【引数説明】
'DbName   :データベース名のフルパス  \\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb
'tblName  :削除したいテーブル名  t_sarvice

Public Function DeleteTable(Optional DbName As String = "\\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb ", _
              Optional tblName As String = " t_sarvice ")

  'エラートラップ
  On Error GoTo DeleteTable_Err:

  '変数宣言
  Dim DB   As DAO.Database '接続先データベース
  Dim Tbl  As DAO.TableDef 'テーブルオブジェクト
  Dim strSQL As String    'SQL文用文字列

  'データベース接続
  If DbName = "" Then
    'データベース名が空白の場合はCurrentDbを指定
    Set DB = CurrentDb
  Else
    '指定MDBを開く
    Set DB = OpenDatabase(DbName)
  End If

  'テーブル削除
  If tblName = "" Then
    'テーブル名が空白の場合は全削除
    For Each Tbl In DB.TableDefs
      'システムテーブルの除外
      If Left(Tbl.Name, 4) <> "MSys" Then
        strSQL = "Drop Table " & Tbl.Name & ";"
        DB.Execute strSQL
      End If
    Next
  Else
    '指定テーブルを削除
    strSQL = "Drop Table " & tblName & ";"
    DB.Execute strSQL
  End If


  '終了処理
  DB.Close

Resume_Point:
  Set Tbl = Nothing
  Set DB = Nothing
  Exit Function

DeleteTable_Err:
  MsgBox Err.Number & vbCrLf & Err.Description
  GoTo Resume_Point:
End Function

'実行プロシージャ
Private Sub DeleteTest()
  Call DeleteTable(, "テーブル1")
End Sub

【5310】Re:他テーブルの削除
回答  小僧  - 05/6/7(火) 10:28 -

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

コードをモジュールに書いているのであれば、

式ビルダを起動 → [mdb名] → [モジュール名]

で関数が表示されます。「DeleteTable」を選択すると

DeleteTable (<<DbName>>, <<tblName>>)

と表示されますので(MDBのフルパス、テーブル名)を指定して実行できます。

" t_sarvice " → "t_sarvice"(前後のスペースが不要です)
と変更すれば引数をつけずに呼び出すと、

MDB   :\\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb
テーブル:t_sarvice

が削除されます。

※削除の処理となるので、意図しないテーブルが消されてしまう可能性があります。
必ずバックアップを取ってから実行してください。

【5311】Re:他テーブルの削除
質問  hiyoko  - 05/6/7(火) 10:58 -

引用なし
パスワード
   ▼小僧 さん:
レスありがとうございました。
私がコピーしてきたコードはユーザー定義関数を
作成していてそれを呼び出して実行するように
なっていたんですね。
教えていただいたように
DeleteTable (\\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb,テーブル1) としたのですが、マクロを実行しようとすると
"指定した式の構文が不正です。たとえば値または識別しが前にないのに
カンマを指定しています。"とエラーメッセージが出てきます。
〈〉をつけたりいろいろやってみたのですが、実行できません。よろしく
お願いいたします。

【5312】Re:他テーブルの削除
回答  小僧  - 05/6/7(火) 11:06 -

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

引数は文字型で指定されているので「"」で括ってあげる必要があります。

>DeleteTable (\\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb,テーブル1)

DeleteTable ("\\Qa-server\ハード評価チーム\データ分析\試作版\インポート用.mdb","テーブル1")

【5313】Re:他テーブルの削除
お礼  hiyoko  - 05/6/7(火) 11:14 -

引用なし
パスワード
   ▼小僧 さん:
削除できました。ほんとうにありがとうございました。
アクセスは奥が深く難しいですが、1歩づつ進んでいきたいと思います。

1783 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free