
質問させてください。
以下のコードを使用していますが改良したいのです。
①現在はダイヤログが出てファイルを選択しています。
これを同じくダイヤログが出て、指定したフォルダー(C:\Users\○○○\Desktop\テストフォルダ\)
からファイル選択したい。
②取り込むテキストファイルのファイル名を取得してsheet1のセルB1に返したい。
(ファイル名が「000001.txt」だった場合、セルに「000001」と返したい)
②について、Dir関数を使うのでしょうか?
いろいろ調べてやってみたのですが、もうわからなくなりました。
申し訳ありませんが教えていただけませんでしょうか?
宜しくお願い致します。
Sub txt1()
Dim txtName As String
txtName = Application.GetOpenFilename("テキストファイル,*.txt")
If txtName <> "False" Then
Open txtName For Input As #1
End If
Dim r As Long
r = 1
Do Until EOF(1)
Dim buf As String
Line Input #1, buf
Dim aryLine As Variant
aryLine = Split(buf, ",")
Dim i As Long
For i = LBound(aryLine) To UBound(aryLine)
Cells(r, i + 1) = aryLine(i)
Next
r = r + 1
Loop
Close #1
End Sub
No.2ベストアンサー
- 回答日時:
ChDir CreateObject("WScript.Shell").SpecialFolders("Desktop")
を
ChDir "C:\Users\○○○\Desktop\テストフォルダ" など
String型でパスを指定します。
No.1
- 回答日時:
こんにちは、
>以下のコードを使用していますが改良したいのです。
①
カレントディレクトリを変更してSpecialFolders("Desktop")を使います。
Dim OldPath As String, txtName As String
OldPath = CurDir
ChDir CreateObject("WScript.Shell").SpecialFolders("Desktop")
txtName = Application.GetOpenFilename("*,*.")
②
Application.GetOpenFilenameからなので、文字列抽出するだけです。
Dim Pos As Integer
Pos = InStrRev(txtName, "\") + 1
Debug.Print Left(Mid(txtName, Pos), InStr(Mid(txtName, Pos), ".") - 1)
ChDir OldPath '一応カレントディレクトリを元に戻します
まとめ
Dim OldPath As String, txtName As String
Dim Pos As Integer
OldPath = CurDir
ChDir CreateObject("WScript.Shell").SpecialFolders("Desktop")
txtName = Application.GetOpenFilename("テキストファイル,*.txt")
If txtName <> "False" Then
Pos = InStrRev(txtName, "\") + 1
Range("B1").Value = Left(Mid(txtName, Pos), InStr(Mid(txtName, Pos), ".") - 1)
ChDir OldPath 'カレントディレクトリを戻します。
Open txtName For Input As #1
End If
なるほど!大変勉強になります。
ちなみにDesktopではなく、フォルダのパスで指定したい場合はどのようにしたら良いのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
ExcelVBAの使い方 ¥の使い方...
-
Eclipse
-
xcopyコマンドの進行状況を表示...
-
visual studio 2010のワーニング
-
VBAとロングファイル名
-
VBAで、VBのapp.pathと同じ機能...
-
【VBA】ExcelマクロでCSVファイ...
-
アクセス 自身のデータベース...
-
Excel2010VBAでエラーが出る相...
-
VBAでパワーシェルを実行したい...
-
fopenでのパス指定
-
【Excel VBA】Power Qurry のソ...
-
アクセスでテキストを開く
-
フォルダ ショートカット
-
実行ファイルのパスを取得したい
-
SendKeysステートメント
-
ブラウザからファイルパスを取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
ExcelのVBAで上書き保存を確...
-
EXCEL(VBA)で指定フォルダ内の...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
VBAでパワーシェルを実行したい...
-
A列に記載されているフォルダ...
-
初心者powershellのPS1ファイル...
-
Eclipse
-
VBAとロングファイル名
おすすめ情報