• 締切済み

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

みんなの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

こんにちは。お邪魔します。 ちょっと気になっていたのですが、  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)
回答No.1

管理簿.xlsmファイルは実在しますか?拡張子がxlsxだったりxlsだったりしませんか? 'Pathで\記号を連結する場合は、.を前置すると良いですよ。 strBookName = Dir(strPath & ".\" & ActiveWorkbook.Name) 'ファイル名を取得する試験 で動作するはずですよね。 > strPath = ActiveWorkbook.Path は、想定どおりの値を取得できてますか?MsgBoxか、Debug.Printで確認できます。

eririn777
質問者

お礼

ファイルも実在し、MsgBoxでパスの名前もファイル名も確認したところ、 ちゃんと、パスもファイル名も持ってきていましたが、 やはり、エラーになってしまい、 原因がよくわからないので、 直接フルパスを書き込む方法に変更しました。 回答ありがとうございました。またよろしくお願いします。

関連する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で上記エラー

  • 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 ではダメなようなので、正しいコードを教えてください。

  • 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 続く

  • ファイルが既に開いているかどうかを取得するには

    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の部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。

  • 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 ↑ここで、「インデックスが有効範囲にありません」

専門家に質問してみよう