環境: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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- フリーソフト イーファンビューでwebpファイルが開けません 1 2022/07/12 07:07
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- Visual Basic(VBA) Excel ファイルを指定し、指定されたファイル内にシートを統合するVBA 8 2023/07/10 10:09
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
VBA★PDFをPDFアプリで印刷し...
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
SaveAsの保存先について
-
xcopyコマンドの進行状況を表示...
-
エクセルのマクロで特定フォル...
-
A列に記載されているフォルダ...
-
EXCEL(VBA)で指定フォルダ内の...
-
Excel 相対パス
-
VBS パスに変数を入れたい
-
ファイル名に親フォルダ名をつ...
-
秀丸マクロ ファイルのパス取得...
-
【VB.NET】App.configにファイ...
-
アプリケーションのインストー...
-
C言語でフルパスのファイル読み...
-
VBAで、VBのapp.pathと同じ機能...
-
PIC開発ソフト(MPLAB IDE V7.5...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
SaveAsの保存先について
-
ExcelVBAの使い方 ¥の使い方...
-
エクセルのマクロで特定フォル...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
VBA一覧取得 再投稿
-
指定したフォルダ内の最新ファ...
-
ExcelのVBAで上書き保存を確...
-
VBAでパワーシェルを実行したい...
-
コマンドプロンプトのコピー関...
-
VBA★PDFをPDFアプリで印刷し...
-
アプリケーションのインストー...
-
開いているファイルを削除し、...
-
A列に記載されているフォルダ...
おすすめ情報