- 締切済み
ActiveWorkbook.Path取得できない
ActiveWorkbook.Pathでパス名を取得して、 同じフォルダ内の別のエクセルシートを開きたいのですが、 見つかりませんと、エラーになります。 ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると 取得できるようになるのですが、 すべて閉じて、再度実行すると、また取得できなくなるという現象が起こっているのですが 毎回上書き保存するわけにいかない為 何かよい方法はありますでしょうか? ----------------------------------- Dim strPath As String Dim strBookName As String strPath = ActiveWorkbook.Path strBookName = Dir(strPath & "\管理簿.xlsm") 'ファイル名取得 On Error GoTo myError Workbooks.Open FileName:=strBookName
- eririn777
- お礼率72% (13/18)
- Visual Basic
- 回答数2
- ありがとう数1
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。お邪魔します。 ちょっと気になっていたのですが、 ActiveWorkbook と Dir()関数 の使い方は意図に合っているものでしょうか。 ThisWorkbook に換えて、Dir()関数にワイルドカード付けてみたら、 よく見かけるニーズの多い記述だったりするのですけれど。 とりあえず、自Bookの在るフォルダにある".xlsm"ファイルを 総なめにしてイミディエイトウィンドウ (VBE画面から、Ctrl + G キーを押すとアクティブになるウィンドウのことです) に表示するものを揚げてみます。 一度、確認した方がよいかと思いましたので。 Sub Re7742919chk() Dim strPath As String Dim strPathName As String Dim strBookName As String strPath = ThisWorkbook.Path strPathName = strPath & "\*.xlsm" strBookName = Dir(strPathName) Debug.Print strPathName: Debug.Print , strBookName Do While strBookName <> "" Debug.Print , strBookName strBookName = Dir() Loop End Sub 次いで、 strPathName = strPath & "\*.xlsm" を、 strPathName = strPath & "\管理簿*.xlsm" strPathName = strPath & "\*管理簿.xlsm" strPathName = strPath & "\*管理簿*.xlsm" などに代えて試してみては如何でしょう。 > ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると > 取得できるようになるのですが、 元コードについては、 実行する度に、アクティブなブックが異なっていたとして それぞれが異なるフォルダにあるブックだった場合に、 見かけ上、同じような現象が再現できますので、 その確認、ということです。
- bin-chan
- ベストアンサー率33% (1403/4213)
管理簿.xlsmファイルは実在しますか?拡張子がxlsxだったりxlsだったりしませんか? 'Pathで\記号を連結する場合は、.を前置すると良いですよ。 strBookName = Dir(strPath & ".\" & ActiveWorkbook.Name) 'ファイル名を取得する試験 で動作するはずですよね。 > strPath = ActiveWorkbook.Path は、想定どおりの値を取得できてますか?MsgBoxか、Debug.Printで確認できます。
関連するQ&A
- VBAでのパスの取得
使用アプリ:Exel2000 コーディングしたマクロをVBAProject(XLCALS.XLM)に保存してあります。 その中で Dim fpath As String fpath = ThisWorkbook.Path 若しくは fpath = ActiveWorkbook.Path でファイルパスを取得しようと思ったのですが、XLStartフォルダのパスが取得されてしまいます。 どうすれば現在開いているファイルパスを取得する事が出来るのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- VBA 新規にエクセルを開き既存のファイルを開く
VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。
- ベストアンサー
- オフィス系ソフト
- ActiveWorkbook.Pathの一つ上
ActiveWorkbook.Pathの一つ上のパスを取得する方法はありますか? 例えば、現在のエクセルブックが入っているパスが C:\Users\ユーザー名\Documents だった場合、 ActiveWorkbook.Pathをすると、上記のパスが取得されますが、 VBAコードで「C:\Users\ユーザー名」までを取得する方法はありますか? Dim strPathName As String strPathName = ActiveWorkbook.Path strPathName = Replace(strPathName, "\Documents", "") こうするしかないですか?
- ベストアンサー
- オフィス系ソフト
- フルパスからファイル名取得の方法
指定したフォルダのフルパスを「bmpFiles」に入れているのですが、表示する時はファイル名のみの表示にしたくて「Path.GetFileName」を使用してファイル名を取得しようとしたのですが、「型'stringの1次元配列'の値を'string'に変換できません」というエラーが出てしまいます。 VBを始めたばかりでよく分からないのでアドバイスをお願いします。 Dim imageDir As String = fbd.SelectedPath ' 指定フォルダまでのディレクトリ Dim bmpFiles As String() = _ System.IO.Directory.GetFiles(imageDir, "*.bmp") 'フルパス Dim bmpFileName As String = _ Path.GetFileName(bmpFiles) ←bmpFilesで上記エラー
- ベストアンサー
- Visual Basic
- Active Basic フォルダの絶対パスの取得
ファイルまでの絶対パスの取得のように、自分のフォルダまでのパスを取得するにはどうしたらいいのでしょうか? D:\aaaa\bbbb\cccc\dddd\abcd.exe があって、 D:\aaaa\bbbb\cccc\dddd\ を取得したいのですが・・・ 実験してみたのですが、上手くいきませんでした。 すみませんが、やり方をご教授ください。お願いします。 ↓頑張った証 '自分自身のファイルパスを取得する Dim path[MAX_PATH] As Byte Dim FileName As BytePtr Dim MaxFilePath As Long Dim MyFileName As Long Dim AllByte As Long Dim MidAns As String GetModuleFileName(NULL,path,MAX_PATH) 'ファイルパスからファイル名を抜き出し、その大きさを取得して、引く FileName=malloc(Len(path)+1) GetFileTitle(path,FileName,Len(path)+1) MaxFilePath=Len(path) MyFileName=Len(FileName)+1 AllByte=MaxFilePath-MyFileName 'フォルダまでのパスを抜き出す MidAns=Mid$(path,1,54) free(FileName)
- ベストアンサー
- その他(プログラミング・開発)
- 親フォルダを取得したい
Sub test1() Dim mystr As String mystr = ActiveWorkbook.Path End Sub これだと、現在のアクティブブックのファイル名以外のパスが取得できるのですが、 mystr = ActiveWorkbook.Parent.Path にすると、なぜか C:\Program Files (x86)\Microsoft Office\Office14 が返ります。 ActiveWorkbook.Path の返り値が C:\新しいフォルダー だとしたら、 C: のみが取得されるコードが知りたいのですが、 ActiveWorkbook.Parent.Path ではダメなようなので、正しいコードを教えてください。
- ベストアンサー
- Excel(エクセル)
- VBAでのORの使い方
以下のようなVBAがあります。指定したフォルダーに保存されているエクセルのファイル名を取得するものです。 ここでやりたいのは、AとJPから始まるファイルを取得したいのですがうまくいきません。これですのコンパイルエラーが出ます。 どう変更すべきかご教示願います。 Sub ファイル名取得() Const SEARCH_DIR As String = "\\SOGKF01.JP.TakataCorp.com\XXXXXXXX\YYYYY" Const SEARCH_FILE As String = "AS*.xlsm" Or Const SEARCH_FILE As String = "JP*.xlsm" Dim tmpFile As String Dim strCmd As String Dim buf() As Byte Dim FileList() As String Dim myArray() As String Dim cnt As Long, pt As Long, i As Long 続く
- ベストアンサー
- Visual Basic
- ファイルが既に開いているかどうかを取得するには
Sub Sample1() Dim App As Object Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = "C:\Users\test.xlsm" With App .Workbooks.Open Filename:=MyFileName .Visible = True If .ReadOnly Then MsgBox "既に開いています" App.Quit '既に開いているのなら、閉じる End If End With End Sub このようなコードを作ったのですが、どうやらIf .ReadOnly Thenの部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。
- ベストアンサー
- Excel(エクセル)
- excel2007でエラーになるマクロ
Excel2003では問題なく動いていた以下のマクロですが、これはボタンにマクロを貼り付けてあり、それを2007で実行すると、「問題が発生したため、Microsoft Office Excelを終了します」となり、強制終了になってしまいます。 でも、VBEの方で実行すると、ワークシートはちゃんと保存されて正しく閉じます。 (その場合、VBE自体は終了にならず、起動したままです) また、マクロを表示させてマクロ名を選択し、実行をクリックすると、正常に動作します。 新しく別の図形を作成し、そこにマクロを貼り付けるとやはり強制終了になります。 Excel2007で、リソースの診断などしても問題は見つかりません。 Windowsは、SP2でだめだったので、SP3にしてみましたが、現象は同じで何ら変化はありませんでした。 エラーを出さなくするにはどうすればよいのでしょうか。 --------マクロ--------- Sub ファイル名を変えて保存して閉じる() Dim nnen As String Dim kcode As String Dim kcode2 As String Dim cname As String Dim dno As String Dim dno2 As String Dim myPath As String nnen = ActiveWorkbook.Worksheets("inputform").Range("O5") kcode = ActiveWorkbook.Worksheets("inputform").Range("R3") kcode2 = Format(kcode, "000") cname = ActiveWorkbook.Worksheets("inputform").Range("C7") dno = ActiveWorkbook.Worksheets("inputform").Range("H26") dno2 = Format(dno, "00000") myPath = ThisWorkbook.Path & "\" On Error Resume Next 'エラーが発生しても処理を続行する ActiveWorkbook.SaveAs Filename:=myPath & "様式5_" & nnen & kcode2 & "【" & cname & dno2 & "】" _ , CreateBackup:=False On Error GoTo 0 'エラー処理ルーチンを無効にする ActiveWorkbook.Close End Sub
- ベストアンサー
- オフィス系ソフト
- VBAマクロ Path名取得について
msoFileDialogFilePickerで選択したファイルのフォルダ名を取得したいのですが、エラーが出てしまいます。 初歩的な話かと思いますが、解決できず困っています。 よろしくお願い致します。 --------------------------------------- Dim Pfile as String Dim fName as String, fPath as String Set objDialog = Application.FileDialog(msoFileDialogFilePicker) If objDialog.Show Then Pfile = objDialog.SelectedItems(1) End If Set objDialog = Nothing fName = Dir(Pfile) fPath = Workbooks(fName).Path ↑ここで、「インデックスが有効範囲にありません」
- ベストアンサー
- Visual Basic
お礼
ファイルも実在し、MsgBoxでパスの名前もファイル名も確認したところ、 ちゃんと、パスもファイル名も持ってきていましたが、 やはり、エラーになってしまい、 原因がよくわからないので、 直接フルパスを書き込む方法に変更しました。 回答ありがとうございました。またよろしくお願いします。