エクセルファイルの開き方について
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/9/28 17:36:28
> Dim myPath As String = System.IO.Path.GetFileName("出力.xlsx")
VB 側にとっての作業フォルダーと、
Excel 側にとっての作業フォルダーは、必ずしも一致しません。
出力.xlsx は、どのフォルダーに置いてありますか?
ファイル名だけで指定すると、現在の位置(カレントディレクトリ)が変更された時に
処理が曖昧になります。ドライブ名も含めたフルパスで指定するようにしましょう。
実行中の EXE の場所を調べたい場合には、このような手法が使えます。
https://www.umayadia.com/vbsample/dotnet-Samples/Sample136GetAppPath.htm
あるいは、System.IO.File の Exists を使うのではなく
System.IO.FileInfo の Exists を使うのも良いでしょう。
VB 側にとっての作業フォルダーと、
Excel 側にとっての作業フォルダーは、必ずしも一致しません。
出力.xlsx は、どのフォルダーに置いてありますか?
ファイル名だけで指定すると、現在の位置(カレントディレクトリ)が変更された時に
処理が曖昧になります。ドライブ名も含めたフルパスで指定するようにしましょう。
実行中の EXE の場所を調べたい場合には、このような手法が使えます。
https://www.umayadia.com/vbsample/dotnet-Samples/Sample136GetAppPath.htm
あるいは、System.IO.File の Exists を使うのではなく
System.IO.FileInfo の Exists を使うのも良いでしょう。
Dim f = New System.IO.FileInfo("出力.xlsx")
If Not f.Exists Then
Return
End If
Dim myPath As String = f.FullName
投稿者 蟻  (社会人)
投稿日時
2020/10/1 15:54:51
魔界の仮面弁士様
返信遅くなりました
>VB 側にとっての作業フォルダーと、
>Excel 側にとっての作業フォルダーは、必ずしも一致しません。
しばらく理解ができなくて悩んでました。
自分のコードみなおしました。
Dim myPath As String = System.IO.Path.GetFileName("出力.xlsx")は
フルパスで帰ってくると勘違いしていました。
(確かにGetFileNameとかいてある。。)
>あるいは、System.IO.File の Exists を使うのではなく
>System.IO.FileInfo の Exists を使うのも良いでしょう。
System.IO.FileとSystem.IO.FileInfoって若干ちがうんですね。
いっしょかとおもっていました。
有難うございました
返信遅くなりました
>VB 側にとっての作業フォルダーと、
>Excel 側にとっての作業フォルダーは、必ずしも一致しません。
しばらく理解ができなくて悩んでました。
自分のコードみなおしました。
Dim myPath As String = System.IO.Path.GetFileName("出力.xlsx")は
フルパスで帰ってくると勘違いしていました。
(確かにGetFileNameとかいてある。。)
>あるいは、System.IO.File の Exists を使うのではなく
>System.IO.FileInfo の Exists を使うのも良いでしょう。
System.IO.FileとSystem.IO.FileInfoって若干ちがうんですね。
いっしょかとおもっていました。
有難うございました
どうしてもわからなかったので質問させてください
VBからエクセルを開きたく下記のようにコードをかきました。
ですがファイルは存在しているのに、★マークのところでエラーが出てしまいます。
内容はファイルが見つかりません、移動された可能性がありますというものです。
前文でファイルの存在確認しているのになぜでしょうか?
常にエクセルを開いているというわけではありません。
宜しくお願いします。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'ファイルが存在しているか確認
Dim myPath As String = System.IO.Path.GetFileName("出力.xlsx")
Dim fileName As String = myPath
If System.IO.File.Exists(fileName) Then
MessageBox.Show("'" + fileName + "'は存在します。")
Else
MessageBox.Show("'" + fileName + "'は存在しません。")
End If
Dim ExcApp As Object
ExcApp = CreateObject("Excel.Application")
ExcApp.workbooks.open(myPath)★
ExcApp.visible = True
End Sub