アプリ版:「スタンプのみでお礼する」機能のリリースについて

OSとExcelを再インストールしたところ、下記のところでエラーが出ました。
なぜでしょうか。解決策はあるでしょうか。
以前は、使用できておりました。
Excelのマクロは、ほとんど理解しておりません。
他人が作成したマクロになります。

OS:WindowsXp
Excel:2003

よろしくお願いします。

Private Sub CommandButton3_Click()
Dim strArg() As String
Dim i As Integer

CommonDialog1.filename = ""   ←ここでエラーがでてとまります。
CommonDialog1.ShowOpen
strArg = Split(CommonDialog1.filename, "\")

 ごにょごにょ演算など。
End Sub

A 回答 (3件)

#2の回答者です。



ところで、
strArg = Split(CommonDialog1.filename, "\")
で、変数に、i があるのですが、もしかしたら、ただのファイル名だけを取るものではないでしょうか?

もしそうだったら、Dir(FName)で、フォルダ名がない、ファイル名だけが取得できます。
    • good
    • 0

こんばんは。



こちらでも、試しに、そのコードそのものはExcel2003で通りましたが、問題は、Excelの種類にも依存するかもしれないということです。

解決策の前に、少し、能書きを書かせていただきます。

仮に、Excel2003は、Personal Versionでも、VB6 RunTime を含んでいたとは思いますが、私の場合は、VB6自体を持っていたし、Access では、使う時はあっても、Excelでは、Developer Versionしか、コモンダイアログは使いませんでしたね。つまり、ランタイムをインストールしただけでは、ライセンスを持っていないはずなので、コモンダイアログは使えないのではないかと思いました。

それと、.filename  とすべてが、小文字になっている所が気になります。何か別に使っているのではないでしょうか?ここの掲示板では、無頓着な人もいるようですが、やはり、これは、何かサインとして受け取ったほうがよいです。

それで、解決策としては、コモンダイアログを使うのをやめて、Excel VBAのネイティブ・コマンドを使ったらどうかと思います。Excelというものは、他のOffice に比較して、コマンドが多く存在しています。

'//
Private Sub CommandButton3_Click()
 Dim Fname As Variant
 Dim strArg As Variant '念の為に、Variant型にしました。
 Const FSEP As String = "\" 'ファイルセパレータ
 Fname = Application.GetOpenFilename() '←ここがポイント
 If VarType(Fname) = vbBoolean Or Fname = "" Then Exit Sub
 strArg = Split(Fname, FSEP)
End Sub

'//
    • good
    • 0

Common Dialog Control が入っていないのでは?


http://oshiete.goo.ne.jp/qa/1185926.html

なので取りあえず、VBEのツールから参照設定をクリックし
中の「参照(B)」ボタンをクリックし
C:\Windows\System32\COMDLG32.OCX を探し出して「開く」

見つからなければ、
http://www.vector.co.jp/soft/dl/win95/util/se342 …
からランタイムをダウンロード。
vb6rt340.exe をダブルクリックすると解凍先フォルダを聞いてきますので
適宜入力。
フォルダ内の、「お読み下さい.chm」に目を通したら
setup.exe をダブルクリック。
その後、参照設定に登録。

メニューのデバッグから○△のコンパイルを実行。
何も起こらなければOK。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています