Excel VBA 質問スレッド №1782 (未解決)
MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : mooon 投稿日時 : 2024/02/18(Sun) 12:03:04 OS : Mac OS X EXCEL : 未指定
以下のレビュー記録表の集計ツールをダウンロードして、Macでも使えるように、仕様を触っております。
取得しているパスは間違っていなさそうですが、以下でエラーになります。
以下のレビュー記録表の集計ツールをダウンロードして、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
>
>
以下のレビュー記録表の集計ツールです。
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
セパレータが違う
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を使用するよう変えてみましたが、「処理が完了しました」と表示されるのに、ファイルデータは取得されていませんでした。
もしからたら、いかに問題がある感じでしょうか?
そこまで教えていただけますと幸いです。
'======================================
' レビュー記録表データ取得
' 指定パスのレビュー記録表を読み込み、シート「レビュー記録データ」に出力する
' 第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
■[返信 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
処理が完了と出ると返信しましたが、以下のコメントアウトをとったところ、ファイルを開くのダイアログの後に、エラーが発生するようになりました。
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\:
になるだけでは
変数の中身は自分で確認しましょう
xxxxx\ が xxxxx\:
になるだけでは
変数の中身は自分で確認しましょう
[返信 7] Re : MacのVBAで他ファイルのデータを抽出したいが、ファイル取得ができない。
投稿者 : めも 投稿日時 : 2024/02/20(Tue) 09:56:58
https://teratail.com/questions/1z7k9rkehjub6x
https://teratail.com/questions/1z7k9rkehjub6x
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-05 13:04:06 )