下記内容にて解決したのですが。。
Public Sub ChangeFieldName()
Dim oTable As DAO.TableDef
Dim oField As DAO.Field
Dim strName As String
On Error GoTo err_trap:
'●●●●
'●↓教えて頂いたのは全テーブル対象ですが、
'●↓テーブルを指定する事はできますか?
'●↓スイマセン勉強不足で。。応用もききませんでした・・
'● お手数ですがもう一度教えて下さい。
'全てのテーブルを列挙
For Each oTable In CurrentDb.TableDefs
If (oTable.Attributes And dbSystemObject) Or _
(oTable.Attributes And dbHiddenObject) Then
'SystemObject属性および隠し属性のついたテーブルは無視
Else
For Each oField In oTable.Fields
'
strName = oField.name
strName = Replace(strName, " ", "") '半角スペース→空白
oField.name = Replace(strName, " ", "") '全角スペース→空白
Next oField
End If
Next oTable
Exit Sub
err_trap:
MsgBox strName & " でエラー発生"
End Sub
すいません。
書かれているソースを流用し、実行確認していませんでした。
こちらでも実行すると、できませんでした。
DAOではないですが、違う実現方法を張っておきます。(ADOX)
Sub Test()
Call ChangeFieldName_ADOX("購入A")
End Sub
Public Sub ChangeFieldName_ADOX(ByVal inTblName As String)
Dim adoxCat As Object
Dim adoxTbl As Object
Dim adoxClm As Object
Set adoxCat = CreateObject("ADOX.Catalog")
adoxCat.ActiveConnection = CurrentProject.Connection
Set adoxTbl = adoxCat.Tables(inTblName)
'フィールドの追加
For Each adoxClm In adoxTbl.Columns
adoxClm.Name = Replace(adoxClm.Name, " ", "", , , vbTextCompare)
Next
Set adoxTbl = Nothing
Set adoxCat = Nothing
End Sub
'全てのテーブルを列挙
For Each oTable In CurrentDb.TableDefs
~~~~~~~
リネーム処理
~~~~~~~
Next oTable
となっているようなので、テーブル列挙を行わず、特定テーブルを指定して既存のコードにはめ込むだけです。
ついでに、「全角スペース」/「半角スペース」処理を一文にまとめました。
こんな感じです。
'テーブル取得
Set oTable = CurrentDb.TableDefs("テーブル名")
'フィールドループ
For Each oField In oTable.Fields
'リネーム処理[全角/半角スペース空白除去]
oField.name = Replace(oField.name, " ", "", , , vbTextCompare)
Next oField
質問者
補足
有難うございます。
試してみたのですが、私のやり方がおかしいのでしょう。
うまく↓セットできていない様です。。。
↓テーブル名
Set oTable = CurrentDb.TableDefs("購入")
[オブジェクトが正しくないか現在設定されていません]
Public Sub ChangeFieldName()
Dim oTable As DAO.TableDef
Dim oField As DAO.Field
Dim strName As String
'テーブル取得
Set oTable = CurrentDb.TableDefs("購入A")
For Each oField In oTable.Fields
oField.Name = Replace(oField.Name, " ", "", , , vbTextCompare)
Next oField
end sub
お礼
お手数お掛けします。 何とか無事実行できました。 まだまだ完成まで道は遠いですが、 どうしてもわからない事を教えて頂ける事で 完成の道がまた見えてきました。 本当に感謝です。有難うございました。