
環境:Win2000 VB.NET2003
参照:Microsoft Excel 9.0 Object Library
エクセルファイルを開くために、Workbooks.Openを使用していますが、引数にフルパスを指定すると正常にオープンできるのですが、相対パスを指定するとファイルが見つからずに開けないというエラーになってしまいます。
Workbooks.Openでは相対パスは指定できないのでしょうか?それとも、何か他の指定が合わせて必要なのでしょうか?
教えてください、よろしくお願いします。
No.3
- 回答日時:
#2 です。
補足します。私の環境が VB6.0(SP6) なので .NET では修正が必要かもしれませんが
相対パスを絶対パスに変換する一例です。
基本的には App.Path でも CurDir でもいいので、基準となるパスの
後ろに相対パスをくっつけて、API の PathCanonicalize 関数に渡して
絶対パスに変換しています。
例)
基準となるパス\..\Test.txt で基準となるパスよりひとつ上
基準となるパス\..\..\Test.txt で基準となるパスよりふたつ上
strPATH = Get_ABSPATH(App.Path & "\..\Test.txt")
'以下コードの一案 ---------------------------------------------
Private Declare Function PathCanonicalize Lib "shlwapi.dll" _
Alias "PathCanonicalizeA" ( _
ByVal lpszDst As String, _
ByVal lpszSrc As String) As Long
Private Const MAX_PATH = 260
'// 絶対パスに変換(手抜き)
Private Function Get_ABSPATH(ByVal strPATH As String) As String
Dim BUF As String * MAX_PATH
Call PathCanonicalize(BUF, strPATH)
Get_ABSPATH = Left$(BUF, InStr(BUF, vbNullChar) - 1)
End Function
Private Sub Command1_Click()
Dim xlAPP As Excel.Application
Dim WB As Excel.Workbook
Dim strPATH As String
'ここでは自己フルパスにおいて、一つ上のディレクトリー
'にあるファイルを開いていますが、事前にファイルの存在
'チェックが必要だと思います
strPATH = Get_ABSPATH(App.Path & "\..\..\test.xls")
Set xlAPP = New Excel.Application
Set WB = xlAPP.Workbooks.Open(strPATH)
'Excel アプリケーションを表示
xlAPP.Visible = True
'ここに処理
'Excel を表示させるとユーザーが直接 Excel を[X]ボタンで閉じる
'かもしれないのでオートメーションエラーをトラップする
On Error GoTo ERROR_HANDLER
'SaveChanges:=True で変更を保存します
'ブックを閉じる
WB.Close SaveChanges:=False
Set WB = Nothing
'以下を忘れるとExcelのプロセスが残ったままに
'なるので注意
xlAPP.Quit
Set xlAPP = Nothing
ERROR_HANDLER:
On Error GoTo 0
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
xcopyコマンドの進行状況を表示...
-
実行ファイルのパスを取得したい
-
VBS パスに変数を入れたい
-
【Excel VBA】Power Qurry のソ...
-
初心者powershellのPS1ファイル...
-
VBA★PDFをPDFアプリで印刷し...
-
VBAでの共有パスにつきまして
-
開いているファイルを削除し、...
-
VBAでパワーシェルを実行したい...
-
リストボックスにファイル名の...
-
エクセルのVBAまたはVisualBasi...
-
アクセス 自身のデータベース...
-
VS2012での\\(円マーク)とバッ...
-
バッチファイル→vbsへのカレン...
-
outlook開けない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
ExcelのVBAで上書き保存を確...
-
コマンドプロンプトのコピー関...
-
VBAでパワーシェルを実行したい...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
VBAでの共有パスにつきまして
-
VBA★PDFをPDFアプリで印刷し...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
EXCEL(VBA)で指定フォルダ内の...
-
A列に記載されているフォルダ...
-
VBAで、VBのapp.pathと同じ機能...
おすすめ情報