[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/11(Tue) 17:55
投稿者名:ともみ
URL :
タイトル:
パス名について
コモンダイアログによって取得されたパス名を、
別のフォームでそのまま使うことはできるのでしょうか。
既存のエクセルファイルをコモンダイアログで選択し、
また別のフォームから表示させたいのですが上手くいきません。

標準モジュールを追加し、グローバル変数として宣言してみましたが
やはり「パス名が無効です」というエラーになってしまいます。

フォーム@strFileName = CommonDialog1.FileName
ここのコモンダイアログの段階ではパスは読み込めています。

フォームAxlFileName = strFileName
     Open xlFileName For Input As #1
この2行目でエラーが出てしまいます。

わかる方教えてください。お願いします。

投稿時間:2005/01/11(Tue) 18:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: パス名について
> フォーム(1) strFileName = CommonDialog1.FileName

Debug.Print strFileName

> ここのコモンダイアログの段階ではパスは読み込めています。
>
> フォーム(2) xlFileName = strFileName
Debug.Print strFileName,xlFileName

>      Open xlFileName For Input As #1

上記のように strFileName を取得後にその中身がどうなっているのか確認するか。
まず、その結果を報告して下さい。
Debug.Print strFileName,xlFileName の結果が何も表示されないなら、標準モジュールで
宣言した strFileName のコードを投稿して下さい。

F8 キーを押して起動し、プログラムを追いながら変数がどう変化するか確認する
又は、ブレークポイント設定して、xlFileName の上にマウスをポイントして変数の
中身を見る

ディレクトリーの区切りの \ が抜けていないか等に注意しながら確認して下さい。

#インターネット上では丸付き数字は文字化け等の原因になりますので使用しないように
しましょう。

投稿時間:2005/01/11(Tue) 18:59
投稿者名:ともみ
Eメール:
URL :
タイトル:
Re^2: パス名について
> >フォーム(1) strFileName = CommonDialog1.FileName
> Debug.Print strFileName

> フォーム(2) xlFileName = strFileName
> Debug.Print strFileName,xlFileName
> Open xlFileName For Input As #1

上記のとおり書き加えて実行してみましたがエラーも変わらず
Debug.Print strFileName,xlFileName の結果が何も表示されませんでした。
標準モジュールでの宣言は
Public strFileName As Stringのみです。

ブレークポイント設定して、xlFileName の上にマウスをポイントして中身を見たところ
全て xlFileName="" でした。(フォーム(1))
ちなみにフォーム(2)のstrFileName = CommonDialog1.FileName
の部分でも strFileName =""でした。
CommonDialog1.FileNameの部分にはパス名が入っていました。

投稿時間:2005/01/11(Tue) 21:37
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: パス名について
> ちなみにフォーム(2)のstrFileName = CommonDialog1.FileName
> の部分でも strFileName =""でした。

> CommonDialog1.FileNameの部分にはパス名が入っていました。
それが本当なら
strFileName = CommonDialog1.FileName
Debug.Print strFileName

ここで表示されるはずですが?

事象を再現できる最低限のコードを作って投稿して見て下さい。
標準モジュールの変数宣言の部分とForm2 のファイル名の取得部分と
Form1でのそのファイル名の表示部分のコードだけのプログラムを
作成して見て同じ状態ならそのコードを投稿して下さい。

投稿時間:2005/01/12(Wed) 08:56
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^3: パス名について
> ちなみにフォーム(2)のstrFileName = CommonDialog1.FileName
> の部分でも strFileName =""でした。

最初の質問では、フォーム(1)のコモンダイアログで得たファイル名を変数strFileNameに
入れて、それをフォーム(2)で使うという事だったんでは?
フォーム(2)でもコモンダイアログをつかうんですか?

ひょっとして、標準モジュールだけではなく、フォーム(2)の方でも
変数strFileNameを宣言していませんか?

標準モジュールの変数を使うなら
Module1.strFileName = CommonDialog1.FileName
xlFileName = Module1.strFileName
としてみるとか。

投稿時間:2005/01/12(Wed) 11:45
投稿者名:ともみ
URL :
タイトル:
Re^4: パス名について
花ちゃんさん、LESIAさん、返信ありがとうございました。
おかげさまでパス名のエラーはでなくなりました。
どうやらご指摘のとおり宣言をしすぎていたようです。
新たに最低限のプロジェクトを作ったらうまくいきました。
念のため載せさせていただきます。

フォーム(1)
Private Sub Command1_Click()
With CommonDialog1
.DialogTitle = "元名簿の選択"
.Filter = "Excel ファイル (*.xls)|*.xls|All File (*.*)|*.*"
.InitDir = "\\File2\Homes2\ua01110\meibo"
.CancelError = True
.ShowOpen
strFileName = CommonDialog1.FileName
Debug.Print strFileName
End With
Form2.Show
End Sub

フォーム(2)
Dim xlFileName As String
Private Sub Command1_Click()
xlFileName = strFileName
Debug.Print strFileName, xlFileName
Open xlFileName For Input As #1
Close #1
End Sub

モジュール
Public strFileName As String