(これはAccess 2003にあります) インポートするファイルのパスと名前を入力できるフォームを開くマクロを作成しています。次に、フォームを閉じ、指定されたファイルにデータをインポートします。フォームとユーザー入力を適切に開くコードがあります。私はパスとファイル名を取得すると、データのインポート/操作を行うコードもあります。マクロでフォームにユーザーが入力した情報を使用します
私の質問は、フォームを閉じた後、マクロ/その他のサブフォームに入力した情報をどのように使用するのですか?
ここに私のフォームのコードの簡易版(「インポート情報を入力します」)です:
Option Compare Database
Option Explicit
Sub RunButton_Click()
FilePathTextBox.SetFocus
DataPath = FilePathTextBox.Text
FileNameTextBox.SetFocus
DataName = FileNameTextBox.Text
DoCmd.Close
End Sub
ここでは(失敗した)私のマクロの試みの簡易版です。
Option Compare Database
Option Explicit
Option Base 1
Public DataPath As String
Public DataName As String
Public CompleteName As String
Function StartImport()
'Open form to let user enter import file info
DoCmd.OpenForm "Enter Import Info", acNormal, , , , acDialog
'Get complete file path/name. I think this is where the problem is.
CompleteName = DataPath & "\" & DataName
'Import
ImportData
'Data clean up
DataCleanup
End Function
Function ImportData()
'Import CompleteName
'The import code here works fine when CompleteName has the right info
End Function
Sub DataCleanup()
'cleans up the data as needed (using DoCmd.RunSQL). Works fine.
End Sub
は、私はより多くを費やしたが、 2時間以上はインターネットで解決策を探していたが、見つけられなかった。友人は、フォームに入力された値を文字列として格納するために一時テーブルを作成することを提案しています(テーブルには1つのフィールドと1つのレコードしかありません)。しかし、私はテーブルから文字列としてそれを取得する方法を知らない。
非常に長い投稿のため申し訳ありません - 私はできるだけ明確になりたかったです。 あらかじめご協力いただきありがとうございます!
==============編集(追加情報)
形で元のコードを手動でパスとファイル名を入力するようユーザに要求します。それ以来、コード全体が機能していました。
しかし、私はパスと名前を決定するためにFileDialogを使用することで間違いやエラーを避けたかったので、テキストボックス(FileNameTextBox_ClickとFilePathTextBox_Click)がクリックされたときに呼び出されるsubsを作成しました。 FileNameTextBox_Click()のコードは、ここにあります:FileDialog doesn't work
何かに影響しますか?
私はこれとトニーと一緒です。それは私のためにうまく動作します。 DatapathとDatanameを他の場所に宣言していないと確信していますか?さて、cntrolsのtextプロパティを使用しないで、フォーカスを設定する必要がない場合、いくつかの段階で悲しみにつながります。ただ 'DataPath = Me.FilePathTextBox'と言う - 私は名前の混乱を避けるために重要です。プロパティが必要な場合は、コントロールにフォーカスがない場合でも使用できる '.value'を使用してください。 – Fionnuala