環境: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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
EXcelのマクロで相対パスでファイルを開く
その他(Microsoft Office)
-
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
アセンブリ名とは??
Visual Basic(VBA)
-
5
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
[VB.net] ExcelへのQRコード出力処理について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
xcopyコマンドの進行状況を表示...
-
開いているファイルを削除し、...
-
ExcelVBAの使い方 ¥の使い方...
-
エクセルVBAで一つ上の階層...
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
【VB6】デバイスマネージャを表...
-
パスワード保護されたExcelファ...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
SaveAsの保存先について
-
fopenでのパス指定
-
コマンドプロンプトでファイル...
-
AccessからExcel最小化
-
アプリケーションのインストー...
-
【VBA】複数のtxtファイルから...
-
Excel 相対パス
-
VBA★PDFをPDFアプリで印刷し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
初心者powershellのPS1ファイル...
-
【VB.NET】App.configにファイ...
-
【VBA】ExcelマクロでCSVファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
パスワード保護されたExcelファ...
-
SaveAsの保存先について
-
ExcelVBAの使い方 ¥の使い方...
-
Windows PowerShellでscoopコマ...
-
開いているファイルを削除し、...
-
VBS パスに変数を入れたい
-
C#でのProcess.Startと変数path
-
コマンドプロンプトのコピー関...
-
EXCEL(VBA)で指定フォルダ内の...
-
実行ファイルのパスを取得したい
おすすめ情報