プロが教えるわが家の防犯対策術!

エクセルのVBAをつかってC++で作ったexeファイルを起動させるプログラムを書きたいと思いますが、うまくいきません。
プログラムは下記です。
Sub Macro1()
Shell ("C:\test.exe")
End Sub

エラーは出ないのですが、計算をしません。
・VBEの参照設定のmicrosft scripting runtimeはクリックいれてます。
・test.exe自体はクリックすると起動して計算します。
もし、対応策をご存知なら教えていただければ助かります。
よろしくお願いします。

A 回答 (4件)

> ただ、shellでexeを起動させると、なぜかマイドキュメントにファイルは作成されていました。


> これはなぜでしょうか?

最初の投稿で述べた

> 「カレントフォルダ(作業ディレクトリ)」があっていないとか・・・

でしょうね。
「カレントフォルダ」はご存知ですよね?
フルパス指定をしない場合(フォルダ指定が無い場合等)にファイルが作成されるフォルダです。

ですから、
> fp = fopen( "hello.txt", "w");
した場合、カレントフォルダにファイルが作成されます。

で、Excelの「カレントフォルダ」は、自動的に「マイドキュメント」になるようです。
ですから、VBAからShell関数で呼び出したプログラムで、
フルパス指定をしないファイルも「マイドキュメント」に作成されてしまいます。


Shell関数実行前に、カレントフォルダの変更を行ってみてください。

例えば、「D:\X」にしたい場合、
----------------------------------------------
Sub Macro1()
'------ 元のカレントフォルダを記憶しておく ----
Dim CF As String
CF=CurDir()
'------ カレントフォルダを変更 ----
ChDrive "D:"
ChDir "D:\X"
' ----- Shellを実行
Shell ("D:\X\test.exe")
'------ カレントフォルダを元に戻す ----
ChDrive CF
ChDir CF
End Sub
----------------------------------------------
とか・・・
    • good
    • 0
この回答へのお礼

dsuekichi様
最後までご丁寧な回答をいただき、本当にありがとうございます。
確かに、カレントフォルダのお話は最初から教えていただいていました。。。
EXEファイルを直接クリックしたときは、そのEXEファイルの置いてあるディレクトリのファイルを認識していたので、てっきりVBAでも同じことが行われると思っていましたが、大きな勘違いでした。
カレントディレクトリの問題はプログラムの基礎の基礎なので、特にSHLL関数の使い方のHPをチェックしても載ってなかったのだと思います。
総括すると、今回のSHELLの問題は二つあり
1、EXEファイルが終わるまで待つようにする
2、EXEファイルはカレントディレクトリが当然デフォルトで設定されているので、VBAでSHELLを使う時はディレクトリを変更する
ということで、dsuekichi様は最初から見抜いていらっしゃったと思います。
それなりに調べたつもりだったのですが、結局元に戻ってきたということで赤面です。
おかげさまで、約一ヶ月悪戦苦闘してようやく動くようになりました。
本当にありがとうございます。

お礼日時:2007/06/24 10:35

変ですね・・・



> ・shell()だと、窓が一瞬出てすぐに消えてしまいます。
実際のコードはどうなっています?

> Shell ("C:\test.exe")
とした場合や、
> www.moug.net/tech/exvba/0150034.htm
のサンプルのコードのままだと、『DOS窓は表示されない』はずですが・・・
#「アイコン状態で起動する」のでタスクバーには表示されますが・・・


ためしに、起動するプログラムをメモ帳("C:\WINDOWS\NOTEPAD.EXE")にすると、どういう動作になりますか?

また、
-------------------------------------
C:\test.exe
PAUSE
-------------------------------------
の2行だけのバッチファイルを作成して、それをShellで呼び出すとどうなります?


また、似たようなサンプルに、
「[XL97]Shell関数で起動したアプリケーションの終了を認識する方法」
http://support.microsoft.com/kb/408064/ja
こういうのがありますけど・・・同じでしょうか?

#起動したプログラムの方の問題の可能性は?

この回答への補足

dsuekichi様
返事が遅くなり、申し訳ありませんでした。
1、("C:\WINDOWS\NOTEPAD.EXE")は成功しました
2、バッチファイルはだめでした。
ですが、実はexeファイルは起動していました。
テストに使ったexeファイルはダブルクリックするとそのexeファイルがあるディレクトリにテキストファイルを作成するシンプルなものです。(ソースは下記参照)
ただ、shellでexeを起動させると、なぜかマイドキュメントにファイルは作成されていました。
これはなぜでしょうか?
もし、ダブルクリックしたときと同じように、exeファイルがあるディレクトリにテキストファイルを作る方法があれば教えてください。
よろしくおねがいします。
(ソース)
main( )
{
FILE *fp; /* ファイルポインタ */
fp = fopen( "hello.txt", "w");
fprintf(fp,"hello!\n");
fclose(fp);
return 0;
}

補足日時:2007/06/14 23:20
    • good
    • 2
この回答へのお礼

dsuekichi様
何度もメールしていただき、本当にありがとうございます。
1、「[XL97]Shell関数で起動したアプリケーションの終了を認識する方法」
も残念ながらダメでした。

2、実際のコードはShell ("C:\test.exe")でパスがもう少し複雑になっていますが、DOS窓が一瞬開いてます。。。

3、>#起動したプログラムの方の問題の可能性は? 
 >("C:\WINDOWS\NOTEPAD.EXE")にすると、どういう動作
ShellExecuteを使って、 "C:\test.exe"を選ぶとexeファイルは起動されますので、プログラム自体は問題ないと思っていましたが、一度シンプルなexeファイルで動くようにしてみたいと思います。

4、>C:\test.exe PAUSEの2行だけのバッチファイルでは?
バッチファイルがわかってないので(すみません、VBAもC++も付け焼刃で)なので、上記あわせてトライしてみてどちらにしてもご報告します。

迅速なお返事本当にありがとうございます。

お礼日時:2007/06/06 23:29

> 計算は一分くらい掛かるものなので、それが原因かなあ、とも思ってます。



確認です。
> 計算をしません。
と判断した理由は何なんでしょう?
#どういうコードで「計算していない」ことを確認しましたか?

Shell関数は、「非同期処理」なので、呼び出したプログラムの終了を待ってはくれません。

例えば、C++プログラムが計算終了時(つまり起動の1分後)に、結果をファイル出力する仕組みになっていて、
VBプログラムが、Shell実行直後に、そのファイルの有無をチェックしていいたりすると、
ファイルは存在しないことになりますが・・・

この回答への補足

dsuekichi様
補足です
よく読むと
>と判断した理由は何なんでしょう?
>#どういうコードで「計算していない」ことを確認しましたか?
に答えてませんでした。
通常はexeファイルをクリックさせて起動させると、テキストファイルを読み込み、計算し、テキストファイルを出すのですが(最低5秒)、それが出ません。
・shell()だと、窓が一瞬出てすぐに消えてしまいます。
・HPなどをみて、exeファイルが終わるまで待つVBAを書いてみましたが、エラーはでないものの、窓も出ずに終わってしまいました。
よろしくおねがいします。

補足日時:2007/06/05 23:56
    • good
    • 0
この回答へのお礼

dsuekichi様
お返事していただき、本当にありがとうございます。
ご指摘の通り、このexeファイルをエキスプローラーからクリックさせて起動させると、あるテキストファイルを読み込み、計算をし、結果のテキストファイルを複数出します。
最初のテキストファイルを出すのに5秒程度、全てのファイルを出すのに一分程度掛かります。
対策として下記HPなどを参考にして、exeファイルが終了するまで待つような仕組みをVBAに入れてみました。
http://www.moug.net/tech/exvba/0150034.htm
このプログラムではエラーは出なかったものの、exeファイルの起動が確認できないまま終わってしました。。。
(単なるshellだと、一瞬窓が開くのが確認出来ます)
大変困っており、他の対策(vbaの工夫、exeファイルのプログラムの工夫や有料相談所など)をご存知なら大変助かります。
お返事本当にありがとうございました。

お礼日時:2007/06/05 23:17

> test.exe自体はクリックすると起動して計算します。


というのは、エクスプローラからですか?
では、
「スタートメニュー」の「ファイル名を指定して実行」で実行するとどうなります?

どういう「計算」をするのか分かりませんが・・・
「カレントフォルダ(作業ディレクトリ)」があっていないとか・・・

#その「C++で作ったexeファイル」は、カレントフォルダに、
#設定ファイルや入力ファイル、出力ファイルが必要なつくりになっているとか・・・


余談ですが、
> Shell ("C:\test.exe")
この呼び方、実は間違いですよ。

> Shell "C:\test.exe"
か、
> Call Shell ("C:\test.exe")
か、
> Dim ret As Long
> ret = Shell ("C:\test.exe")
にしましょう。
    • good
    • 0
この回答へのお礼

dsuekichiさん
お返事ありがとうございます
文法を教えていただきありがとうございました!
「スタートメニュー」の「ファイル名を指定して実行」だと大丈夫でした。
計算は一分くらい掛かるものなので、それが原因かなあ、とも思ってます。

お礼日時:2007/06/02 14:41

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBAから他アプリケーションを操作することは可能ですか?

こんばんは。

VBAの本を購入し勉強していますが、VBAと他アプリケーションとの連携について記載が少なく(txtやcsvファイル操作)、どこまで出来るんだろうという不安があり質問しました。

(1)EXCEL VBAから他アプリケーションを起動し、設定操作、命令を送り操作することは可能でしょうか?
イメージとしては他アプリに一方的に命令を送り操作できれば良しです。(アプリ側からのリターン要求はしません。)

(2)第2の質問です。
VBAで他アプリを起動した状態で人が操作している感覚でマウスを操作できますか?(利用方法:他アプリの●ボタンを押したい!!)
目の前にソフトがあるのに触る操作は出来ないものでしょうか?
いろいろ調べて見ましたが、この様な事例はありません。
駄目元ですが、こんな操作を知っていましたら教えてください。
こんな操作ができればいいな~

Aベストアンサー

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim rChange   As Range
  Dim sCommand  As String
  Dim sScriptFile As String

  ' // 実行する UWSC スクリプト
  sScriptFile = "C:\sample.uws"
  ' // UWSC の起動オプションは UWSC のヘルプを参照
  sCommand = DQ & EXE_PATHNAME & DQ & " " & _
        DQ & sScriptFile & DQ
  
  ' // 変更されたのが単一セルかつ A 列でなければ終了
  If Target.Cells.Count > 1 Then Exit Sub
  Set rChange = Intersect(Target, Columns("A"))
  If rChange Is Nothing Then
    Exit Sub
  End If
  
  ' // さらに値が TEST だった場合のみ実行
  If rChange.Value = "TEST" Then
    Shell sCommand, vbNormalFocus
  End If

End Sub

#2,4 です。

> EXCEL2000内の特定のセルに規定値外のデータが入力された場合に
> UWSCを起動して...

UWSC のスクリプトが完成しているとすれば、起動オプション付きで
バッチ処理すれば良いでしょう。実行タイミングは、シートまたは
ThisWorkbook の Change イベントが使えます。

例)シートモジュール

Private Const EXE_PATHNAME As String = "C:\Program Files\uwsc\uwsc.exe"
Private Const DQ      As String = """"

Private Sub Worksheet_Change(ByVal Target As Range)

  ...続きを読む

QEXCELマクロのEXE化

EXCELで作成したマクロを、EXEの実行形式に変換できるのでしょうか?
フリーのソフトで変換できるとありがたいのですが、何かいいソフトはないでしょうか?

Aベストアンサー

EXEにはならないとおもいますよ。
他の方法をオススメします。

(EXEがいい場合)
(1)VisualStuidioのVB等でコーディングをしてEXEにする。

(EXCELを残したい場合)
(2)他のエクセルファイルのマクロから実行する。

(EXCELが立ち上がったときに起動したい場合)
(3)AUTO_OPENでコーディングする。

などが一般的かと。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QVBAのShellの同期的実行

ExcelVBAについての質問です。コマンドプロンプトで実行するプログラムをCで作成しました(これをXXX.exeとします)。このプログラムは計算が終了した後で、その結果のファイルを作成します(これをYYY.txtとします)。このプログラムを操作し、結果を表にして出力するために、ExcelVBAでshellを使って以下のようなプログラムを作成しました。
  shell("XXX.exe")
  call Output
Outputでは、XXX.exeが作成したファイルYYY.txtからデータを読み込んでシートに結果を出力するのですが、うまくファイルを読み込みません。多分、shellにより実行したXXX.exeが終了する前にOutputが呼ばれているのだと思うのですが、もしそうだとしたらどのような解決方法があるのでしょうか。よろしくお願いします。
WinXp、Excel2000です

Aベストアンサー

VBならこういう風にするのですが...
ExcelVBAでは確認していませんが。
http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html#exec

参考URL:http://www.ops.dti.ne.jp/~allergy/vb/vbvba.html#exec

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QVBAでブックを非表示で開いて処理して閉じる方法

エクセルVBAで質問なのですが、別のブックを非表示で開いて処理をし、処理が終わったらそのブックを閉じるマクロを作りたいです。

ネットで方法をたくさん調べたのですが、うまくいきません。
ActiveWindow.Visible = Falseを使うと非表示でブックを開くのですが、次の処理をしようとすると非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。

どなたか良い方法をご存じないでしょうか?


↓今作ろうとしているマクロを参考に書いておきます。

ブックA内に書かれているブックBを非表示で開く

処理(ブックBのシート内の表に記入漏れの空白セルがあればブックAに空白セルの番地を表示させる)

ブックBを非表示のまま閉じる


非表示にせずにブックBを開けばうまく処理が完了するのですが、ActiveWindow.Visible = Falseを入れて非表示でブックBを開くと処理が開始しないという状況です。

Aベストアンサー

こんにちは

>非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。
手作業でも非表示のブックでシートやセルを選択しようとしても無理ですよね?

VBAの記述の方法をSelectやActivateなどを用いないように書き直せば、ご希望のことは実現可能だと思います。

例として、以下では"TestBook"というブックを開き、そのシート1内でA1:C20の範囲の空白セルを探して、メッセージボックスにカンマ区切りで結果を表示します。
(殆ど時間がかかりませんので、非表示にしなくても同じだとは思いますが…)

Sub sample()
 Dim wb As Workbook, c As Range
 Dim str As String

 str = ""
 Set wb = Workbooks.Open(ThisWorkbook.Path & "\TestBook.xlsm")
 Windows(wb.Name).Visible = False

 For Each c In wb.Worksheets(1).Range("A1:C20")
  If c = Empty Then
   If str <> "" Then str = str & " , "
   str = str & c.Address
  End If
 Next c
 wb.Close SaveChanges:=False

 MsgBox str
End Sub

※ わざわざ『非表示』に設定しなくても、現在のウィンドウをアクティブにすることで、新しく開いたウィンドウを(裏側に)隠すこともできますね。

こんにちは

>非表示のブックのシートがselectで選択できないのかエラーが出てしまいます。
手作業でも非表示のブックでシートやセルを選択しようとしても無理ですよね?

VBAの記述の方法をSelectやActivateなどを用いないように書き直せば、ご希望のことは実現可能だと思います。

例として、以下では"TestBook"というブックを開き、そのシート1内でA1:C20の範囲の空白セルを探して、メッセージボックスにカンマ区切りで結果を表示します。
(殆ど時間がかかりませんので、非表示にしなくても同じだとは思いま...続きを読む

QRange("A1")⇔cells(1,1)の変換。

EXCELのマクロについて質問します。
Range("A1")⇒(1,1)
cells(1,1)⇒("A1")
に一発変換する方法を教えて下さい。
時間があるかた宜しくお願いします。

Aベストアンサー

こんなのでよろしいでしょうか?
range("A1") → Range("A1").Row & "," & Range("A1").Column
cells(1,1) → Cells(1, 1).Address(False, False)
()や""は付けていません

QVBとVBAの違い

お世話になります。

現在、ExcelVBAで機械設計の計算をさせようと思い勉強しているのですが、VBとVBAの違い(VBと比較したとき、VBAできること、できない事)の境目?がいまいち判りません。
まだまだ勉強中で困惑しております。このままExcelVBAを勉強していく物か、VBについて勉強していくか迷っています。このままExcelVBAを勉強してExcelVBAを理解すれば判断できるかと思うのですが、畑違いの勉強になってしまわないかと心配です。

やりたいことは、各種計算の簡略化です。
現在は、関数電卓で行っていますが、これをパラメータを入力すると計算結果が出る。このような物を作りたいと思っています。

長くなってしまったのでまとめると、
1、VBAとVBの違い
2、ExcelVBAで設計計算が可能か
あと、
プログラムにより計算させるときに、最適なプログラム(JavaとかPHPとかHTML等など・・・)お勧めのプログラムがありましたらアドバイス頂けたらと思います。

Aベストアンサー

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではできませんので、VBが必要です。

2. ExcelVBAで設計計算が可能か

可能です。また、多分VBAを使わなくてもExcelの関数でもある程度のことが可能だと思われます。お持ちの関数電卓の桁数にもよりますが、相当な高精度が必要でない限り大丈夫です。

文面からすると、プログラミング未経験のようですが、やりたいことが明確なので、Excelをお持ちであればVBAで始めてみてはいかがでしょうか。他の言語(Java, C, PHP...)でも可能でしょうが、中には環境を用意しなくてはならなかったり、本質である計算以外に気にしなくてはならないことが多く、初心者にはとっつきづらいのではないかと考えます。

VBAからVBへの移行、VBからVBAへの移行はどちらも可能ですし、VBAからVBへの移行は多少時間がかかるかもしれませんが、VBよりVBAから始める方が楽なので、どちらに優越があるとは一概に言えないと思います。一人でちょっと使う程度や勉強用なら、ExcelVBAをお勧めします。
しばらくすると、ExcelVBAの限界を感じるようになると思うので、そこからVBに移行するというのでも悪くないと思います。

1. VBAとVBの違い

VBは単体で動作するアプリケーションが作れますが、VBAはOfficeが必要です。
また、VBAはOfficeの環境が使えるので、Excel等を使った入出力の機能が既にできていますが、VBではある程度自分で作る必要があります。また、費用的な面でVBは購入しないと使えませんが、VBAはOfficeがあれば使えますので、既にExcelなどを導入されているならば、追加の費用が必要ありません。
もし、複数の人間で作ったプログラムを利用され、かつその中にOfficeを持っていない人が含まれるのであればVBAではで...続きを読む

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

QShell関数内で変数を使うことについて

お世話になります。
MicrosoftのサイトやAccessVBAのヘルプ、各種掲示板を拝見してもぴったりくるものが見つからなかったので教えていただきたく思います。

AccessVBAからExcelファイルを開きたいと思っています。
コマンドボタンウィザードを参考にして、
Call Shell("Excel.exe フルパス"vbMaximizedFocus)としました。
フルパスは変数を使用しております。
変数は2つの変数と&で結んだ文字列で構成されています。内容は以下の通りです。
MyCurrent & "\" & MyFile & ".xls"
(MyFile = InputBox("保存したいファイル名を入力できます。", "ファイル名)、MyCurrent = Application.GetOption("Default Database Directory")を意味します。InputBoxでユーザーにファイル名を決定してもらい、既定のデータベースフォルダにそれを保存させます。)

MyCurrentの中身は私のPCの場合はC:\Documents and Settings\●\デスクトップです(●=私の名前。スペースなし)。
ここで問題なのですが、Micorsoftのサイトによると、Shell関数内で半角スペースを含むフルパスやファイル名を記述すると、うまくいかないので"(ダブルコーテーション)を入力する必要があるとありました。
変数ではなく、普通にフルパスを入力する際には"を記述してファイルを開くことができたのですが、変数の場合それをどのようにしたら良いのかわからないのです。
変数そのものには半角スペースがなくても、変数の中身に半角スペースが存在する場合はその半角スペースをどのように回避したらよいのでしょうか?
もしかして、変数の中身にあった場合は駄目なのでしょうか?

長文で申し訳ありませんが、よろしくお願いいたします。

お世話になります。
MicrosoftのサイトやAccessVBAのヘルプ、各種掲示板を拝見してもぴったりくるものが見つからなかったので教えていただきたく思います。

AccessVBAからExcelファイルを開きたいと思っています。
コマンドボタンウィザードを参考にして、
Call Shell("Excel.exe フルパス"vbMaximizedFocus)としました。
フルパスは変数を使用しております。
変数は2つの変数と&で結んだ文字列で構成されています。内容は以下の通りです。
MyCurrent & "\" & MyFile & ".xls"
(MyFile = InputBox("保...続きを読む

Aベストアンサー

変数の中身が単に1つのファイルへのパスだけなら、
"""" & filepath & """" の様に最初と最後にくっつけます
filepathにフルパスで入っているとして


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング