Excel VBA 質問スレッド №1782 (未解決)

MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。

投稿者 : mooon     投稿日時 : 2024/02/18(Sun) 12:03:04     OS : Mac OS X     EXCEL : 未指定
以下のレビュー記録表の集計ツールをダウンロードして、Macでも使えるように、仕様を触っております。
取得しているパスは間違っていなさそうですが、以下でエラーになります。
    'レビュー記録表オープン
     Set exapp = New Excel.Application
     Set wb = exapp.Workbooks.Open(strFileName)


どうしたら、ファイルを検索し、関連ファイルの中身を抽出できますでしょうか?








自身で少し触っている箇所

Function funcGetFilePath(strDir, strFile, strMode) As String

    'フォルダ名の最後尾が\でなければ付与する(ここを機能させず、/をファイル入力欄に書き込んでます)
     If Right(strDir, 1) <> "\" Then
         'strDir = strDir + " /"
End If

    If strMode = "0" Then
        'ワイルドカードなし
        'ファイル名に拡張子ければ付与する
        If Right(strFile, 4) <> "xlsx" Then
            strFile = strFile & ".xlsx"
        End If
    
    Else
        'ワイルドカードあり
        'ファイル名に拡張子ければ付与する
        If Right(strFile, 4) <> "xlsx" Then
            strFile = "*" & strFile & "*.xlsx"
        Else
            strFile = "*" & strFile
        
        End If
    End If

MsgBox "strDir & strFile: " & strDir & strFile

    funcGetFilePath = strDir & strFile


End Function

スポンサーリンク
[返信 1] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : 以下のレビュー記録表の集計ツールです。     投稿日時 : 2024/02/18(Sun) 12:04:24
以下のレビュー記録表の集計ツールです。
https://pm-laboratory.com/m20221219/


■[質問] mooonさん(2024-02-18 12:03:04)の記事
> 以下のレビュー記録表の集計ツールをダウンロードして、Macでも使えるように、仕様を触っております。
> 取得しているパスは間違っていなさそうですが、以下でエラーになります。
> 'レビュー記録表オープン
> Set exapp = New Excel.Application
> Set wb = exapp.Workbooks.Open(strFileName)


> どうしたら、ファイルを検索し、関連ファイルの中身を抽出できますでしょうか?








> 自身で少し触っている箇所

> Function funcGetFilePath(strDir, strFile, strMode) As String

> 'フォルダ名の最後尾が\でなければ付与する(ここを機能させず、/をファイル入力欄に書き込んでます)
> If Right(strDir, 1) <> "\" Then
> 'strDir = strDir + " /"
> End If

> If strMode = "0" Then
> 'ワイルドカードなし
> 'ファイル名に拡張子ければ付与する
> If Right(strFile, 4) <> "xlsx" Then
> strFile = strFile & ".xlsx"
> End If

> Else
> 'ワイルドカードあり
> 'ファイル名に拡張子ければ付与する
> If Right(strFile, 4) <> "xlsx" Then
> strFile = "*" & strFile & "*.xlsx"
> Else
> strFile = "*" & strFile

> End If
> End If

> MsgBox "strDir & strFile: " & strDir & strFile

> funcGetFilePath = strDir & strFile


> End Function



[返信 2] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : 気分     投稿日時 : 2024/02/18(Sun) 12:52:09
セパレータが違う
https://darumaexcel.uijin.com/info/pause.html

[返信 3] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : 質問者です。     投稿日時 : 2024/02/18(Sun) 14:25:25
■[返信 2] 気分さん(2024-02-18 12:52:09)の記事
> セパレータが違う
> https://darumaexcel.uijin.com/info/pause.html

ありがとうございます。

以下にて、Application.PathSeparatorを使用するよう変えてみましたが、「処理が完了しました」と表示されるのに、ファイルデータは取得されていませんでした。

Function funcGetFilePath(strDir, strFile, strMode) As String

    strDir = Replace(strDir, "/", Application.PathSeparator)
    
    'フォルダ名の最後尾が\でなければ付与する
         If Right(strDir, 1) <> Application.PathSeparator Then

         'strDir = strDir & If Right(strDir, 1) <> Application.PathSeparator Then
End If

    If strMode = "0" Then
        'ワイルドカードなし
        'ファイル名に拡張子ければ付与する
        If Right(strFile, 4) <> "xlsx" Then
            strFile = strFile & ".xlsx"
        End If
    
    Else
        'ワイルドカードあり
        'ファイル名に拡張子ければ付与する
        If Right(strFile, 4) <> "xlsx" Then
            strFile = "*" & strFile & "*.xlsx"
        Else
            strFile = "*" & strFile
        
        End If
    End If

MsgBox "strDir & strFile: " & strDir & strFile

    funcGetFilePath = strDir & strFile


End Function


もしからたら、いかに問題がある感じでしょうか?
そこまで教えていただけますと幸いです。


'======================================
' レビュー記録表データ取得
' 指定パスのレビュー記録表を読み込み、シート「レビュー記録データ」に出力する
' 第1引数:読み込み対象ファイル名(フルパス)
' 第2引数:読み込み対象シート名
'======================================
Function funcGetRevData(strFileName)
On Error GoTo exception_funcGetRevData

Dim exapp As Excel.Application
Dim wb As Workbook

' ファイルパスの確認
MsgBox "ファイルを開く: " & strFileName

'レビュー記録表オープン
Set exapp = New Excel.Application
Set wb = exapp.Workbooks.Open(strFileName)

MsgBox "ファイルをく: " & strFileName

'======================================================
' 初回処理
'======================================================
'1行目はシートクリアしてからタイトル行を出力する
If intRowHeader = 1 Then
'集計シートのクリア
Worksheets(strWS_NameHeader).Cells.Clear
Worksheets(strWS_NameLine).Cells.Clear

'レビュー記録ヘッダ
Worksheets(strWS_NameHeader).Range("A" + CStr(intRowHeader)).Value = "No"
Worksheets(strWS_NameHeader).Range("B" + CStr(intRowHeader)).Value = "プロジェクト名"
Worksheets(strWS_NameHeader).Range("C" + CStr(intRowHeader)).Value = "システム名"
Worksheets(strWS_NameHeader).Range("D" + CStr(intRowHeader)).Value = "作成日"
Worksheets(strWS_NameHeader).Range("E" + CStr(intRowHeader)).Value = "作成者"
Worksheets(strWS_NameHeader).Range("F" + CStr(intRowHeader)).Value = "機能名"
Worksheets(strWS_NameHeader).Range("G" + CStr(intRowHeader)).Value = "工程"
Worksheets(strWS_NameHeader).Range("H" + CStr(intRowHeader)).Value = "レビュー実施日"
Worksheets(strWS_NameHeader).Range("I" + CStr(intRowHeader)).Value = "レビューア"
Worksheets(strWS_NameHeader).Range("J" + CStr(intRowHeader)).Value = "レビューイ"
Worksheets(strWS_NameHeader).Range("K" + CStr(intRowHeader)).Value = "参加人数"
Worksheets(strWS_NameHeader).Range("L" + CStr(intRowHeader)).Value = "所要時間"
Worksheets(strWS_NameHeader).Range("M" + CStr(intRowHeader)).Value = "総工数(人時)"
Worksheets(strWS_NameHeader).Range("N" + CStr(intRowHeader)).Value = "レビュー対象"

intRowHeader = intRowHeader + 1


'レビュー記録一覧
Worksheets(strWS_NameLine).Range("A" + CStr(intRowList)).Value = "No"
Worksheets(strWS_NameLine).Range("B" + CStr(intRowList)).Value = "システム名"
Worksheets(strWS_NameLine).Range("C" + CStr(intRowList)).Value = "機能名"
Worksheets(strWS_NameLine).Range("D" + CStr(intRowList)).Value = "工程"
Worksheets(strWS_NameLine).Range("E" + CStr(intRowList)).Value = "レビューイ"
Worksheets(strWS_NameLine).Range("F" + CStr(intRowList)).Value = "箇所・頁"
Worksheets(strWS_NameLine).Range("G" + CStr(intRowList)).Value = "指摘内容"
Worksheets(strWS_NameLine).Range("H" + CStr(intRowList)).Value = "指摘分類"
Worksheets(strWS_NameLine).Range("I" + CStr(intRowList)).Value = "指摘対象"
Worksheets(strWS_NameLine).Range("J" + CStr(intRowList)).Value = "原因分類"
Worksheets(strWS_NameLine).Range("K" + CStr(intRowList)).Value = "埋込工程"
Worksheets(strWS_NameLine).Range("L" + CStr(intRowList)).Value = "重要度"
Worksheets(strWS_NameLine).Range("M" + CStr(intRowList)).Value = "重複"
Worksheets(strWS_NameLine).Range("N" + CStr(intRowList)).Value = "対応要否"
Worksheets(strWS_NameLine).Range("O" + CStr(intRowList)).Value = "対応状況"
Worksheets(strWS_NameLine).Range("P" + CStr(intRowList)).Value = "ステータス"
Worksheets(strWS_NameLine).Range("Q" + CStr(intRowList)).Value = "確認者"
Worksheets(strWS_NameLine).Range("R" + CStr(intRowList)).Value = "完了日"

intRowList = intRowList + 1


End If

[返信 4] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : 質問者です。     投稿日時 : 2024/02/18(Sun) 14:33:15
処理が完了と出ると返信しましたが、以下のコメントアウトをとったところ、ファイルを開くのダイアログの後に、エラーが発生するようになりました。

If Right(strDir, 1) <> Application.PathSeparator Then
strDir = strDir & Application.PathSeparator
End If

[返信 5] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : さんこう     投稿日時 : 2024/02/19(Mon) 11:50:09
>エラーが発生するようになりました。

エラーメッセージは?

[返信 6] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : ポイント管理     投稿日時 : 2024/02/19(Mon) 17:38:16
xxxxx\ が xxxxx\:
になるだけでは
変数の中身は自分で確認しましょう

[返信 7] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : めも     投稿日時 : 2024/02/20(Tue) 09:56:58
https://teratail.com/questions/1z7k9rkehjub6x

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-04-05 13:04:06 )
タイトルとURLをコピーしました