全200件 (200件中 1-50件目)
SELECT 受付ID, 所属部署, 'PC' as 品目 FROM テーブル WHERE PC=1UNIONSELECT 受付ID, 所属部署, 'Wi-Fi' as 品目 FROM テーブル WHERE Wi-Fi=1UNIONSELECT 受付ID, 所属部署, 'セキュアID' as 品目 FROM テーブル WHERE セキュアID=1... (60個の品目分、繰り返す)
2025年11月24日
コメント(0)
Sub CopyToLastRow2() Dim ws As Worksheet Dim lastRow As Long Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row If lastRow > 2 Then ws.Range("D2:E2").AutoFill Destination:=ws.Range("D2:E" & lastRow) MsgBox "コピーが完了しました。" End IfEnd Sub
2025年10月28日
コメント(0)
🚀 BASE中国輸入無在庫転売初心者でも始められる低リスクビジネスモデル📋 ビジネスフローの概要1BASEショップ開設最短30秒でネットショップを開設無料で始められる日本最大級のプラットフォーム2タオバオ新幹線連携中国最大ECモール「タオバオ」と連携月額500円で無在庫販売が可能3商品リサーチ・出品利益率の高い商品を選定ワンクリックでBASEに出品4受注・仕入れ注文が入ってから商品を仕入れ在庫リスクゼロで運営5検品・発送現地で検品後、顧客へ直送発送作業の手間なし✨ 主要機能とメリット💰初期費用が少ない在庫を持たないため、初期投資を大幅に削減。売れてから仕入れるので資金リスクが最小限。🏠在庫保管不要自宅に在庫を保管する必要なし。スペースの心配や管理の手間が一切不要。🔄自動化システムBASEとタオバオ新幹線の連携により、商品登録から発送まで半自動化が可能。🌍豊富な商品数タオバオの膨大な商品カタログからニッチな商品や最新トレンド商品を販売可能。📊 コスト構造BASEショップ開設費用: 無料タオバオ新幹線連携費用: 月額500円BASE決済手数料: 3.6% + 40円/件商品代行手数料: 商品価格の5-10%国際送料: 商品により変動👍 メリット✅ 初期資金が少なくて済む✅ 在庫リスクがない✅ 発送作業が不要✅ 商品数が豊富✅ 副業として始めやすい👎 デメリット❌ 配送に時間がかかる(1-2週間)❌ 商品の質を事前確認できない❌ 為替変動リスク❌ 集客が必要❌ 返品・交換対応が複雑⚠️ 重要な注意点• 商標権侵害に注意(ブランド品のコピー商品は禁止)• 食品・化粧品・電化製品は許可が必要な場合あり• 確定申告が必要(年収20万円以上)• 顧客対応は日本語で迅速に行う必要あり🎯 成功のポイント1. 商品選定が最重要• ニッチで競合が少ない商品を狙う• 日本では手に入りにくい商品• 利益率30%以上を目標2. 顧客満足度の向上• 商品説明を詳細に記載• 配送期間を明確に伝える• 迅速な問い合わせ対応3. マーケティング戦略• SNSを活用した集客• SEO対策でGoogle検索上位を狙う• リピーター獲得のための施策🌟 まずは小さく始めて、徐々にスケールアップしていくことが成功の鍵です!🌟
2025年08月03日
コメント(0)
BASE×中国輸入無在庫転売 概要1. 🏪 BASEでショップ開設BASEでネットショップを無料開設。デザインもカンタン。2. 🔍 中国サイトで商品リサーチタオバオ・アリババ等で売れる商品を探します。3. 🛒 BASEに商品登録無在庫なので画像・説明を登録するだけ。仕入れ前に売れるか試せます。4. 📦 注文後に中国から仕入れ注文が入ったら仕入れて、購入者へ直送もOK。メリット:在庫リスクなし・初期コスト低・誰でも始めやすい注意点:納期遅延や品質リスクもあるので注意してください。BASE管理画面はこちら
2025年08月03日
コメント(0)
ご希望の内容を整理しますと、1. **各ファイルのシートに「上書き保存日時」を表示する** → ファイルが上書き保存されたタイミングで日時をセルに表示したい。2. **ファイルAとファイルBの間で「相手ファイルを開くボタン」を設置** → 互いのファイルをすぐ開けるようにボタンを作成。3. **開いたファイルの対象シートの内容に差分があればコピーして同期する** → 差分検知ができれば手動でのコピペを簡単に行う自動処理。---### 1. 上書き保存日時をシートに表示する方法残念ながらExcel VBAのイベントで「ファイルが上書き保存されたタイミング」を直接検知することはできません。代替として:- **Workbook_BeforeSaveイベント**を使う ファイルが「保存」または「上書き保存」される直前に実行できます。 このタイミングで日時をシートの指定セルに書き込みます。### VBAコード例(ThisWorkbookに記載)```vbaPrivate Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ' 保存される直前にSheet1のA1セルに日時を反映(必要に応じて変更) ThisWorkbook.Sheets("シート1").Range("A1").Value = "最終保存日時: " & Format(Now, "yyyy/mm/dd hh:mm:ss")End Sub```---### 2. 他方のファイルを開くボタンを作る方法シートにボタンを配置し、クリックで相手ファイルを開くVBAを作ります。#### VBAコード例(標準モジュールに記載)```vbaSub OpenOtherFile() Dim otherFilePath As String ' ここに相手ファイルのフルパスを指定してください otherFilePath = "C:\パス\ファイルB.xlsx" If Dir(otherFilePath) <> "" Then Workbooks.Open otherFilePath Else MsgBox "ファイルが見つかりません:" & vbCrLf & otherFilePath End IfEnd Sub```- シートの「開発」タブ → 「挿入」→「フォームコントロールのボタン」でボタンを作り、- 作成したOpenOtherFileマクロを割り当てます。---### 3. 差分があったらコピーで同期の自動化についてExcel VBAで2つのファイルのシート同士の「差分チェック」と「更新」を完全自動化するのはやや複雑です。ただし、例えば:- 2つ目のファイルが開かれたら、内容を比較- 差分があればメッセージを出し、同期(コピー)を実行する処理を作成可能です。#### 簡単なコピー同期コード参考例(ファイルBの対象シートをファイルAへコピー)```vbaSub SyncSheetFromBtoA() Dim wbA As Workbook Dim wbB As Workbook Dim wsA As Worksheet Dim wsB As Worksheet ' ファイルAとファイルB合わせて開いていることが前提 Set wbA = Workbooks("ファイルA.xlsx") Set wbB = Workbooks("ファイルB.xlsx") Set wsA = wbA.Sheets("シート1") Set wsB = wbB.Sheets("シート1") ' シート1の全内容をコピー(値・書式含む) wsB.Cells.Copy wsA.Cells.PasteSpecial Paste:=xlPasteAll Application.CutCopyMode = False MsgBox "ファイルBのシート1からファイルAのシート1に同期しました。"End Sub```- 差分検知はセルごとの比較をプログラムで行えますが、処理負荷が高いので簡略化可能- 実際はどちらの変更を優先するか、同期タイミングをどうするかの設計も必要です---### ご提案- まずは「保存日時表示」と「他ファイルを開くボタン」の実装をご案内します - 差分検知と自動同期はニーズに応じて順を追って作成・調整するのが安全必要でしたら、その具体的なVBAコードや配置方法をさらに詳しく説明いたします。どうしますか?
2025年07月23日
コメント(0)
@echo offREM プロキシサーバーのチェックを外す(ユーザー権限でOK)REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /fecho プロキシサーバーの設定を無効にしました。pause
2025年06月13日
コメント(0)
@echo offsetLOCALrem ── ネットワーク共有経由の元ファイルパス ──set SRC="\\pc001\access\ACCESS_BACKEND.accdb"rem ── ファイルサーバー003のバックアップ先 ──set DEST="\\fileserver003\backup_folder\ACCESS_BACKEND_%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%.accdb"rem バックアップ先フォルダの存在確認を省略しています。事前に作成推奨です。rem ファイルコピー実行copy %SRC% %DEST%
2025年04月24日
コメント(0)
![]()
1. 炭酸水が1L65円!? 賢い買い方とは?炭酸水を愛する全ての人に朗報です!「また炭酸水がなくなった…」毎日の習慣として炭酸水を飲んでいる方なら、このため息をついた経験があるのではないでしょうか。スーパーでまとめ買いしようとすれば重たくて大変、かといって少しずつ買うと割高になってしまう…。そんなジレンマを抱える方々に、今日は驚きの情報をお届けします。楽天市場を賢く活用すれば、なんと1リットルあたり65円という驚きの価格で炭酸水を手に入れることができるんです!しかも、重いペットボトルを抱えて帰る必要もなく、自宅まで配送してもらえる便利さ。「え、そんなに安く買えるの?」と思われるかもしれませんが、これは紛れもない事実です。通常、スーパーやコンビニで炭酸水を購入すると、1リットルあたり100円前後することが多いですよね。それが65円で手に入るとなれば、毎日飲む方にとってはすごい節約になります。この記事では、楽天市場で炭酸水をとことんお得に購入する方法を、私がこっそり実践している裏技も含めてご紹介します。特に注目したいのが「Rakuten24」で使える600円オフクーポンの活用法です。「安くておいしい炭酸水を、もっと賢く手に入れたい」そんなあなたのために、次の章から具体的な方法を詳しく解説していきます。この商品はラベルレス、つまりラベルがない商品です。普段自分の家で飲むのであれば、別にラベルはいらないですよね。むしろ外でもいらないかも。(中身水道水って゛思われるかな?でも炭酸水って気づいてもらえたら…。)捨てる時のゴミも減るし、捨てる時にわざわざラベルをはがす手間もないし。 そして、12本入りでこのお値段!送料無料!一本当たり115円/1Lですね。【訳あり】アイリス 富士山の強炭酸水 ラベルレス(1L×12本)【CRYSTALSPARK】[炭酸水 1L 1リットル 国産 炭酸 割り材 炭酸飲料]価格:1,380円(税込、送料別) (2025/3/20時点)楽天で購入2. クーポンの力を引き出そう2.1 クーポン攻略法楽天市場での買い物で、特に炭酸水をお得に購入するための強力な味方がクーポンです。しかし、クーポンを使いこなすためにはいくつかのポイントを押さえておく必要があります。まず、クーポンは使用条件があるため、購入前に必ず確認しましょう。特に、最低購入金額や対象商品が指定されていることがあります。また、楽天会員や初めての利用者に向けた特典もあるため、自分の状況に合ったクーポンを探すことが重要です。さらに、クーポンの利用期限も確認しておくべきです。有効期限が切れると、せっかくの割引が無駄になってしまいます。また、楽天市場には定期的なセールやキャンペーンがあるため、そういった機会に併用することで、さらなるお得を実現できます。例えば、特定のポイント還元日やボーナスポイントの付与が行われる日を狙うのも一つの手です。2.2 お得を逃さないタイミングクーポンを最大限に活用するためには、購入するタイミングも非常に重要です。特に、炭酸水のような日常的に消費する商品は、まとめて購入することが多いため、タイミング次第でかなりの節約をはかれます。楽天市場では季節ごとや特定のイベントに合わせた大規模なセールが行われることがあり、これに合わせてクーポンを利用するのが賢い買い方です。例えば、春の新生活応援セールや年末年始の特別セールなど、こういったタイミングで炭酸水を購入することで、クーポンとポイントバックを組み合わせたお得な買い物が実現できるのです。また、事前に購入予定の商品をリストアップし、タイムセールや特定のポイントアップデーをチェックするという準備も有効です。憶えやすい日付にアラームを設定するなどして、絶対にお得を逃さないようにしましょう。そして今なら3/31まで限定の600円オフクーポンがあるんです。こちらから商品をチェック!これを使えば、なんと12本入り1ケースが780円、65円/1Lで買えちゃうんです!このように、クーポンの使い方をマスターし、お得なタイミングを見極めることで、炭酸水を少しでも安く手に入れることが可能です。次の章では、さらに賢い購入テクニックについてご紹介していきます。3. 賢い購入テクニック3.1 誰もがハマる落とし穴賢い購入を心がける際、注意が必要なのがまとめ買いの落とし穴です。私は2ケースまとめて注文して失敗した経験があります。一見するとお得に思えるかもしれませんが、実際には無駄な出費につながることもあります。ほかに買いたいものがないなら、まとめ買いを避ける方が賢明です。 3.2 使える購入ハック1回の買い物で2ケースまとめて買ってしまうと、600円しか割引になりません。 つまり、こうなります👇❌ 損する買い方(1回の注文で2ケース)1380円 × 2 = 2760円600円引き → 2160円(1ケースあたり1080円)✅ 最もお得な買い方(1ケースずつ別々に注文)1回目の注文:1380円 → 600円引き → 780円2回目の注文:1380円 → 600円引き → 780円合計1560円(1ケースあたり780円!)→ 同じ商品なのに、買い方を変えるだけで600円も節約! このように、賢いテクニックを活用することで、炭酸水をよりお得に手に入れることができます。4. 楽天市場初心者にもおすすめ!楽天市場を普段あまり使わない人も、Rakuten24では日用品や飲料をお得に買えるクーポンが頻繁に配布されるので、チェックしておくと便利です!特に炭酸水のような消耗品は、クーポンを使うだけでコスパ最強になるので、この機会にぜひ試してみてください。✅まとめ ✅ 楽天市場のRakuten24で使える600円オフクーポンを活用✅ 1回の買い物で2ケース買わず、1ケースずつ別々に注文する方がお得✅ 3回まで使えるので、最大1800円割引が可能【訳あり】アイリス 富士山の強炭酸水 ラベルレス(1L×12本)【CRYSTALSPARK】[炭酸水 1L 1リットル 国産 炭酸 割り材 炭酸飲料]価格:1,380円(税込、送料別) (2025/3/20時点)楽天で購入
2025年03月20日
コメント(0)
Sub ボタン1_Click() Dim wdApp As Object Dim wdDoc As Object Dim ws As Worksheet Dim rng As Range Dim cell As Range Dim i As Long Dim lastRow As Long Dim table As Object Dim findRange As Object ' Word定数 Const wdReplaceAll = 2 Const wdFindContinue = 1 ' Wordアプリケーションを起動 On Error Resume Next Set wdApp = GetObject(Class:="Word.Application") If wdApp Is Nothing Then Set wdApp = CreateObject(Class:="Word.Application") End If On Error GoTo 0 ' Wordドキュメントを開く Set wdDoc = wdApp.Documents.Open("P:\AI\テストW.docx") ' Excelのシートと範囲を設定 Set ws = ThisWorkbook.Sheets(1) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set rng = ws.Range("A2:D" & lastRow) ' Wordのテーブルを取得 Set table = wdDoc.Tables(1) ' 部門名を設定 Set findRange = wdDoc.Content findRange.Find.Text = "=E2" findRange.Find.Replacement.Text = ws.Range("E2").Value findRange.Find.Forward = True findRange.Find.Wrap = wdFindContinue findRange.Find.Format = False findRange.Find.MatchCase = False findRange.Find.MatchWholeWord = False findRange.Find.MatchWildcards = False findRange.Find.MatchSoundsLike = False findRange.Find.MatchAllWordForms = False findRange.Find.Execute Replace:=wdReplaceAll ' Wordにデータを転記 i = 2 For Each cell In rng.Rows table.cell(i, 1).Range.Text = cell.Cells(1, 1).Value table.cell(i, 2).Range.Text = cell.Cells(1, 2).Value table.cell(i, 5).Range.Text = cell.Cells(1, 3).Value table.cell(i, 6).Range.Text = cell.Cells(1, 4).Value i = i + 1 Next cell ' Wordを表示 wdApp.Visible = True ' 後処理 Set wdDoc = Nothing Set wdApp = NothingEnd Sub
2025年03月16日
コメント(0)
Get-ChildItem "C:\path\to\your\folder" -Directory | ForEach-Object { $_.FullName } | Set-Content "list.txt"@echo offsetlocalrem ここで対象のフォルダを指定set "targetFolder=C:\path\to\your\folder"rem 保存するファイル名を指定set "outputFile=list.txt"rem フォルダに移動cd /d "%targetFolder%" || ( echo 指定したフォルダが見つかりません: "%targetFolder%" exit /b 1)rem フォルダ内のサブフォルダの一覧を取得してファイルに保存dir /ad /b > "%outputFile%"rem 完了メッセージecho サブフォルダの一覧を "%outputFile%" に保存しました。endlocal
2025年02月27日
コメント(0)
Private Sub btnClear_Click() ' 依頼者フィールドを空白にする If Not IsNull(Me.依頼者) Then Me.依頼者 = Null End If ' フォームを再描画 Me.RepaintEnd Sub
2025年02月17日
コメント(0)
Sub FindTopLevelAccessFolder() Dim ws As Worksheet Set ws = ActiveSheet Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' F列をクリア ws.Range("F2:F" & lastRow).ClearContents Dim i As Long Dim currentRoot As String Dim minAccessLevel As Long ' 最初のパスをルートとして設定 currentRoot = GetRootPath(ws.Cells(2, "B").Value) minAccessLevel = 999 ' まず、各ルートパスごとの最小アクセスレベルを見つける For i = 2 To lastRow Dim thisRoot As String thisRoot = GetRootPath(ws.Cells(i, "B").Value) ' 新しいルートパスの開始 If thisRoot <> currentRoot Then currentRoot = thisRoot minAccessLevel = 999 End If ' アクセス権のある最小レベルを更新 If ws.Cells(i, "E").Value = "○" Then minAccessLevel = WorksheetFunction.Min(minAccessLevel, ws.Cells(i, "D").Value) End If ' このパスの最小レベルと同じレベルで、かつ上位にアクセス権がない場合のみ○を付ける If ws.Cells(i, "D").Value = minAccessLevel And ws.Cells(i, "E").Value = "○" Then If Not HasUpperAccess(ws, i) Then ws.Cells(i, "F").Value = "○" End If End If Next iEnd SubPrivate Function GetRootPath(fullPath As String) As String Dim parts() As String parts = Split(fullPath, "\") If UBound(parts) >= 3 Then GetRootPath = parts(0) & "\" & parts(1) & "\" & parts(2) & "\" & parts(3) Else GetRootPath = fullPath End IfEnd FunctionPrivate Function HasUpperAccess(ws As Worksheet, currentRow As Long) As Boolean Dim currentPath As String Dim currentLevel As Long currentPath = ws.Cells(currentRow, "B").Value currentLevel = ws.Cells(currentRow, "D").Value ' 現在の行より上の行をチェック Dim i As Long For i = currentRow - 1 To 2 Step -1 ' 同じルートパスで、より上位の階層にアクセス権がある場合 If InStr(currentPath, ws.Cells(i, "B").Value) = 1 And _ ws.Cells(i, "D").Value < currentLevel And _ ws.Cells(i, "E").Value = "○" Then HasUpperAccess = True Exit Function End If Next i HasUpperAccess = FalseEnd Function
2025年02月09日
コメント(0)
Sub ExtractFoldersToDelete() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim folderPath As String Dim topFolderPath As String Dim result As String Dim currentLevel As Long Dim previousLevel As Long ' シートを設定 Set ws = ThisWorkbook.Sheets("Sheet1") ' "Sheet1"はデータが入力されているシート名 ' 最終行を取得 lastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row ' 結果を格納する変数を初期化 result = "" ' 2行目から最終行までループ previousLevel = 1 ' 初期値を1に設定 For i = 2 To lastRow ' E列に"◯"が付いている場合 If ws.Cells(i, "E").Value = "◯" Then folderPath = ws.Cells(i, "B").Value currentLevel = ws.Cells(i, "D").Value ' 階層数を取得 ' 最上位のフォルダパスを取得 topFolderPath = GetTopFolderPath(folderPath, currentLevel) ' 重複チェック If Not IsDuplicate(result, topFolderPath) Then ' 結果文字列に追加 (改行付き) result = result & topFolderPath & vbCrLf End If End If previousLevel = currentLevel ' 前の階層数を更新 Next i ' 結果をメッセージボックスに表示 MsgBox resultEnd Sub' 最上位のフォルダパスを取得する関数 (階層数を引数に追加)Function GetTopFolderPath(folderPath As String, currentLevel As Long) As String Dim parts() As String parts = Split(folderPath, "\") ' 最上位のフォルダパスを組み立てる If currentLevel > 1 Then GetTopFolderPath = parts(1) & "\" & parts(2) Else GetTopFolderPath = folderPath ' 最上位フォルダの場合はそのまま End IfEnd Function' 重複チェック関数Function IsDuplicate(result As String, folderPath As String) As Boolean IsDuplicate = (InStr(1, result, folderPath) > 0)End Function
2025年02月07日
コメント(0)
Sub ExtractFolderAccessRights() Dim logSheet As Worksheet, folderSheet As Worksheet Dim lastLogRow As Long, lastCol As Long, lastFolderRow As Long Dim i As Long, j As Long, k As Long Dim folderPath As String, topFolderPath As String Dim folderName As String Dim targetName As String Dim accessRights As String ' シートを設定 Set logSheet = ThisWorkbook.Sheets("log") Set folderSheet = ThisWorkbook.Sheets("folder") ' 最終行と最終列を取得 lastLogRow = logSheet.Cells(Rows.Count, "C").End(xlUp).Row lastCol = folderSheet.Cells(1, Columns.Count).End(xlToLeft).Column lastFolderRow = folderSheet.Cells(Rows.Count, "B").End(xlUp).Row ' フォルダシートの最終行を取得 ' folderシートのB2から最終列までループ For j = 2 To lastCol targetName = folderSheet.Cells(1, j).Value ' 検索対象の名前 ' 結果を書き出す最初の行を設定 (folderSheetのB3から) k = 3 ' logシートの2行目から最終行までループ For i = 2 To lastLogRow folderPath = logSheet.Cells(i, "C").Value folderName = logSheet.Cells(i, "G").Value ' アクセス権者名が入っている最初の列 ' G列からAD列までループ For l = 7 To 30 ' 列番号7はG列、30はAD列 ' 名前が一致する場合 If logSheet.Cells(i, l).Value = targetName Then ' 最上位のフォルダパスを取得 topFolderPath = GetTopFolderPath(folderPath) ' 結果をfolderシートに書き出す (重複チェック) If Not IsDuplicate(folderSheet, k - 1, topFolderPath) Then folderSheet.Cells(k, j).Value = topFolderPath k = k + 1 End If Exit For ' 一致する名前が見つかったら、その行のループを抜ける End If Next l Next i Next jEnd Sub' 最上位のフォルダパスを取得する関数Function GetTopFolderPath(folderPath As String) As String Dim parts() As String parts = Split(folderPath, "\") ' 最上位のフォルダパスを組み立てる GetTopFolderPath = parts(1) & "\" & parts(2)End Function' 重複チェック関数Function IsDuplicate(sheet As Worksheet, lastRow As Long, folderPath As String) As Boolean Dim i As Long For i = 3 To lastRow ' 3行目から最終行までチェック If sheet.Cells(i, 2).Value = folderPath Then ' 2列目で比較 IsDuplicate = True Exit Function End If Next i IsDuplicate = FalseEnd Function
2025年02月07日
コメント(0)
方法2:PowerShellを使うPowerShellは、Windowsに標準搭載されたスクリプト言語です。Get-ContentとForEach-Objectコマンドレットを使うことで、CSVファイルを分割できます。手順: * PowerShellを開く: スタートメニューから「Windows PowerShell」>「Windows PowerShell」を選択して開きます。 * CSVファイルがあるディレクトリに移動: cdコマンドを使って、分割したいCSVファイルがあるディレクトリに移動します。 cd C:\Users\your_username\Documents\csv_files * PowerShellスクリプトを実行: 以下のスクリプトを実行します。 $i = 0Get-Content -Path "data.csv" -ReadCount 1000 | ForEach-Object { $i++ $_ | Out-File -FilePath "data_part$i.csv" -Encoding "UTF8"} * Get-Content -Path "data.csv" -ReadCount 1000: data.csvを1000行ずつ読み込みます。 * ForEach-Object { ... }: 読み込んだ内容を処理します。 * $i++: ファイル番号をカウントアップします。 * $_ | Out-File -FilePath "data_part$i.csv" -Encoding "UTF8": 読み込んだ内容をdata_part1.csv、data_part2.csvなどのファイルにUTF8エンコーディングで書き出します。注意点: * PowerShellスクリプトでも、分割後のファイルにヘッダー行は自動的に含まれません。ヘッダー行を各ファイルに含める場合は、スクリプトを修正する必要があります。どちらの方法を選ぶか * 手軽に分割したい場合はsplitコマンド、より柔軟な処理を行いたい場合はPowerShellスクリプトがおすすめです。補足 * これらの方法以外にも、VBScriptやPythonなどのスクリプト言語を使ってCSVファイルを分割することも可能です。 * 分割する行数やファイル名、エンコーディングなどは、必要に応じて変更してください。ご不明な点があれば、お気軽にご質問ください。
2025年02月05日
コメント(0)
はい、PowerShell を使って CSV ファイルを 0.5GB ごとに分割することも可能です。ただし、行数ではなくファイルサイズで分割する場合、単純な -ReadCount パラメーターは使用できません。以下のスクリプトは、CSV ファイルを 0.5GB (500MB) ごとに分割する例です。$i = 0$j = 0$fileSizeLimit = 500MB # 分割するファイルサイズ (0.5GB)# ヘッダー行を取得$header = (Import-Csv -Path "data.csv" -Encoding "UTF8" | Get-Member -MemberType Properties | Where-Object {$_.Name -ne "PSObject"} | Select-Object -ExpandProperty Name)# ファイルを読み込み、分割Get-Content -Path "data.csv" -Encoding "UTF8" | ForEach-Object { if ($j -eq 0) { # 新しいファイルを作成する場合 $outFile = "data_part$([Math]::Floor($i/$fileSizeLimit)).csv" $header | Out-File -FilePath $outFile -Encoding "UTF8" # ヘッダー行を書き出す } # 現在のファイルのサイズを取得 $currentFileSize = (Get-Item -Path $outFile).Length / 1MB # ファイルサイズが制限を超えたら新しいファイルを作成 if ($currentFileSize -ge $fileSizeLimit) { $i += $fileSizeLimit $outFile = "data_part$([Math]::Floor($i/$fileSizeLimit)).csv" $header | Out-File -FilePath $outFile -Encoding "UTF8" # ヘッダー行を書き出す $j = 0 # 行数をリセット } $_ | ConvertTo-Csv -NoTypeInformation | Out-File -FilePath $outFile -Append -Encoding "UTF8" # データを書き出す $j++}解説: * $fileSizeLimit 変数で分割するファイルサイズ (0.5GB = 500MB) を指定します。 * Import-Csv でヘッダー行を取得し、$header 変数に格納します。 * Get-Content でファイルを読み込み、各行を処理します。 * 現在のファイルのサイズを (Get-Item -Path $outFile).Length / 1MB で取得します。 * ファイルサイズが $fileSizeLimit を超えたら、新しいファイルを作成し、ヘッダー行を書き出します。 * ConvertTo-Csv でデータを CSV 形式に変換し、ファイルに追記します。注意点: * このスクリプトは、ファイルのサイズで分割するため、分割後のファイルの行数は一定ではありません。 * ファイルサイズはあくまで目安であり、厳密に 0.5GB になるわけではありません。 * スクリプトの実行には時間がかかる場合があります。その他: * Python などのスクリプト言語を使うと、より柔軟にファイル分割を制御できます。 * 大きなファイルを扱う場合は、メモリ不足に注意してください。上記スクリプトを試しても問題が解決しない場合は、CSV ファイルの内容やスクリプトの詳細を教えていただけると、より具体的なアドバイスができます。
2025年02月05日
コメント(0)
Sub 重複除外抽出() Dim ws1 As Worksheet, ws2 As Worksheet Dim lastRow As Long, lastCol As Long Dim dataRange As Range Dim cell As Range Dim dict As Object 'Dictionaryオブジェクト Dim outputRow As Long 'ワークシートの設定 Set ws1 = ThisWorkbook.Sheets("Sheet3") '抽出元シート Set ws2 = ThisWorkbook.Sheets("Sheet4") '抽出先シート 'Dictionaryオブジェクトの生成 Set dict = CreateObject("Scripting.Dictionary") '抽出範囲の最終行と最終列を取得 lastRow = ws1.Cells(Rows.Count, "C").End(xlUp).Row 'C列の最終行 lastCol = ws1.Cells(4, Columns.Count).End(xlToLeft).Column '4行目の最終列 '抽出範囲を設定 Set dataRange = ws1.Range("C4", ws1.Cells(lastRow, lastCol)) '抽出先シートの開始行 outputRow = 2 'セルの値を順にチェック For Each cell In dataRange '空白セルはスキップ If cell.Value = "" Then Continue For 'Dictionaryに値が存在しない場合、抽出先シートに書き出す If Not dict.Exists(cell.Value) Then dict.Add cell.Value, 1 'Dictionaryに値を登録 ws2.Cells(outputRow, "A").Value = cell.Value '抽出先シートに書き出し outputRow = outputRow + 1 '次の書き出し行へ End If Next cell 'メッセージボックスを表示 MsgBox "重複除外抽出が完了しました。", vbInformationEnd Subコードの説明: * ワークシートと変数の宣言: * ws1: 抽出元のSheet3 * ws2: 抽出先のSheet4 * lastRow: 抽出範囲の最終行 * lastCol: 抽出範囲の最終列 * dataRange: 抽出範囲のセル範囲 * cell: 抽出範囲内の各セル * dict: 重複チェックに使用するDictionaryオブジェクト * outputRow: 抽出先シートの書き出し行 * ワークシートの設定: * 抽出元と抽出先のワークシートを設定します。 * Dictionaryオブジェクトの生成: * Dictionaryオブジェクトを生成します。Dictionaryは、キーと値のペアを格納するオブジェクトで、重複チェックに利用できます。 * 抽出範囲の最終行と最終列を取得: * ws1.Cells(Rows.Count, "C").End(xlUp).Row: C列の最終行を取得します。 * ws1.Cells(4, Columns.Count).End(xlToLeft).Column: 4行目の最終列を取得します。 * これらを使って、可変範囲のセルを取得します。 * 抽出範囲を設定: * 抽出範囲のセル範囲を設定します。 * 抽出先シートの開始行を設定: * 抽出先シートの書き出し開始行を設定します。 * セルの値を順にチェック: * For Eachループを使って、抽出範囲内の各セルを順番に処理します。 * 空白セルはスキップ: * If cell.Value = "" Then Continue For: セルが空白の場合、次のセルへスキップします。 * Dictionaryに値が存在しない場合、抽出先シートに書き出す: * If Not dict.Exists(cell.Value) Then: Dictionaryに同じ値が存在しない場合、以下の処理を行います。 * dict.Add cell.Value, 1: Dictionaryに値を登録します。 * ws2.Cells(outputRow, "A").Value = cell.Value: 抽出先シートのA列に値を書き出します。 * outputRow = outputRow + 1: 次の書き出し行へ進みます。 * メッセージボックスを表示: * 抽出処理が完了したことを知らせるメッセージボックスを表示します。使い方: * Excelファイルを開き、VBE(Visual Basic Editor)を開きます(Alt + F11)。 * 「挿入」→「標準モジュール」を選択します。 * モジュールに上記のコードを貼り付けます。 * Excelシートに戻り、「Sheet3」と「Sheet4」が存在することを確認します。 * 抽出したいデータがSheet3のC4セル以降に入力されていることを確認します。 * マクロを実行します(VBEでF5キーを押すか、Excelシートで「開発」タブ→「マクロ」からマクロを選択して実行)。これで、Sheet3のC4セルから連続したセル範囲に入っている内容が重複を除いてSheet4のA2セルから縦に列記されます。
2025年02月04日
コメント(0)
データ | Export-Csv -Path ([System.IO.Path]::Combine($env:USERPROFILE, "Desktop", "ファイル名.csv")) -NoTypeInformation -Encoding UTF8Sub RemoveEmptyLines() Dim cell As Range Dim lines As Variant Dim result As String Dim i As Long ' シートと範囲を設定 With ThisWorkbook.Sheets("Sheet1") ' C2からC4334の範囲をループ For Each cell In .Range("C2:C4334") ' セルの内容を取得 Dim cellContent As String cellContent = cell.Value ' 改行コードを統一(vbCrLfをvbLfに置換) cellContent = Replace(cellContent, vbCrLf, vbLf) ' デバッグ用: セルの内容を出力 Debug.Print "処理前のセル: " & cell.Address & " | 内容: " & cellContent ' セルの内容を行ごとの配列に分割 lines = Split(cellContent, vbLf) result = "" ' 各行をチェック For i = LBound(lines) To UBound(lines) ' 空白でない行のみを追加 If Trim(lines(i)) <> "" Then If result <> "" Then result = result & vbLf ' 改行を追加(最初の行以外) End If result = result & lines(i) End If Next i ' セルに結果を設定 cell.Value = result ' デバッグ用: 処理後の内容を出力 Debug.Print "処理後のセル: " & cell.Address & " | 内容: " & cell.Value Next cell End With MsgBox "空白行が削除されました。"End Sub
2025年01月30日
コメント(0)
Microsoft Accessで、異なるテーブル間で特定のフィールドの値を反映させることは可能です。具体的には、クエリを使用して「T_1」の「所属」フィールドに「T_2」の「所属」フィールドの値を更新することができます。以下の手順で実行できます。1. **クエリの作成**: - Accessを開き、「作成」タブから「クエリデザイン」を選択します。 - 「T_1」と「T_2」を追加します。2. **結合の設定**: - 「T_1」と「T_2」を結合するために、両テーブルの「UserID」フィールドをドラッグして結びつけます。この際、結合の種類を「T_1のすべてのレコードとT_2の一致するレコード」を選択します。3. **更新クエリの作成**: - クエリデザインのリボンから「更新クエリ」を選択します。 - 更新するフィールドとして「T_1」の「所属」フィールドを選択し、更新する値として「T_2」の「所属」フィールドを指定します。 具体的には、クエリのSQLビューで以下のようなSQL文を記述します。 ```sql UPDATE T_1 INNER JOIN T_2 ON T_1.UserID = T_2.UserID SET T_1.所属 = T_2.所属; ```4. **クエリの実行**: - クエリを実行すると、「T_1」の「所属」フィールドが「T_2」の「所属」フィールドの値で更新されます。この方法で、同じ「UserID」を持つレコードの「所属」フィールドを反映させることができます。ExcelのXLOOKUPのような機能は直接的にはありませんが、クエリを使うことで同様の結果を得ることができます。
2025年01月16日
コメント(0)
了解しました。PowerShellスクリプトを、スクリプトが保存されているフォルダ内で実行するように修正します。これにより、個々のフォルダパスを指定する必要がなくなります。### 修正版 PowerShellスクリプト以下のスクリプトを使用して、スクリプトが保存されているフォルダ内のすべてのvCardファイルを一括でOutlookにインポートします。1. **メモ帳を開く**: メモ帳を開きます。2. **以下のPowerShellスクリプトをコピーして貼り付ける**: ```powershell $scriptPath = $PSScriptRoot # スクリプトが保存されているフォルダのパスを取得 $outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNamespace("MAPI") $contactsFolder = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderContacts) Get-ChildItem -Path $scriptPath -Filter *.vcf | ForEach-Object { $vcfFile = $_.FullName try { $contactItem = $outlook.CreateItemFromTemplate($vcfFile) $contactItem.Move($contactsFolder) Write-Host "Imported: $vcfFile" } catch { Write-Host "Failed to import: $vcfFile - $_" } } ```3. **この内容を `import_vcf.ps1` という名前で保存**: 保存する場所は、.vcfファイルが保存されているフォルダと同じ場所にします。#### 手順2: PowerShellスクリプトの実行1. **PowerShellを管理者権限で開く**: Windowsのスタートメニューから「PowerShell」と検索し、「管理者として実行」を選択します。2. **スクリプトの実行ポリシーを設定**: スクリプトの実行を許可するために、以下のコマンドを入力します: ```powershell Set-ExecutionPolicy RemoteSigned ```3. **スクリプトを実行**: PowerShellで、スクリプトを保存したディレクトリに移動し、以下のコマンドを入力してスクリプトを実行します: ```powershell cd "C:\path\to\script" # ここを実際のスクリプト保存場所に変更 ./import_vcf.ps1 ```これにより、スクリプトが保存されているフォルダ内のすべてのvCardファイルがOutlookの連絡先に一括でインポートされます。### 注意事項- スクリプトの実行前に、必ずOutlookがインストールされていることを確認してください。- PowerShellスクリプトを実行するための権限が必要です。- スクリプトの実行ポリシーを設定する際には、セキュリティリスクを理解し、必要に応じて設定を戻してください。この方法で、個々のフォルダパスを指定することなく、複数のvCardファイルを一括でOutlookにインポートすることができます。
2024年05月17日
コメント(0)
了解しました。以下のコードは、Excelマクロが格納されているフォルダを自動的に取得し、そのフォルダ内のすべての.vcfファイルをOutlookの連絡先にインポートするように変更したものです。### 修正版 VBAコード1. **Excelを開く**: Excelを開きます。2. **VBAエディタを開く**: `Alt + F11`を押してVBAエディタを開きます。3. **新しいモジュールを作成する**: `Insert > Module`を選択して新しいモジュールを作成します。4. **以下のコードを新しいモジュールに貼り付ける**:```vbaSub ImportVCFtoOutlookContacts() Dim objOutlook As Object Dim objNamespace As Object Dim objContactsFolder As Object Dim objVCFItem As Object Dim fso As Object Dim folderPath As String Dim file As Object Dim vcfFilePath As String Dim wb As Workbook ' 現在のワークブックのパスを取得 Set wb = ThisWorkbook folderPath = wb.Path ' Outlookアプリケーションを取得 On Error Resume Next Set objOutlook = GetObject(, "Outlook.Application") If objOutlook Is Nothing Then Set objOutlook = CreateObject("Outlook.Application") End If On Error GoTo 0 ' Namespaceと連絡先フォルダを取得 Set objNamespace = objOutlook.GetNamespace("MAPI") Set objContactsFolder = objNamespace.GetDefaultFolder(10) ' 10 = olFolderContacts ' FileSystemObjectを使用してフォルダ内のファイルを操作 Set fso = CreateObject("Scripting.FileSystemObject") ' フォルダ内のすべての.vcfファイルを処理 For Each file In fso.GetFolder(folderPath).Files If LCase(fso.GetExtensionName(file.Name)) = "vcf" Then vcfFilePath = file.Path Set objVCFItem = objOutlook.CreateItemFromTemplate(vcfFilePath) objVCFItem.Move objContactsFolder End If Next MsgBox "すべてのvCardファイルがOutlookの連絡先にインポートされました。"End Sub```5. **Excelからマクロを実行**: - VBAエディタを閉じ、Excelに戻ります。 - `Alt + F8`を押してマクロダイアログを開き、`ImportVCFtoOutlookContacts`を選択して実行します。### 説明- `folderPath = wb.Path` によって、マクロが格納されているExcelファイルのフォルダパスを取得します。- そのフォルダ内のすべての.vcfファイルを検出し、Outlookの連絡先にインポートします。これにより、ユーザーごとに異なるフォルダパスを手動で設定する必要がなくなり、Excelマクロが格納されているフォルダ内の.vcfファイルを一括でインポートすることができます。
2024年05月17日
コメント(0)
Private Sub CommandButton1_Click() Dim chkBoxes() As Control Dim i As Integer Dim j As Integer Dim isChecked As Boolean Dim index As Integer isChecked = False ' 各大項目の小項目の数 Dim subItems As Variant subItems = Array(9, 10, 3, 5, 6, 4, 8, 7, 2) ' 例として大項目1から9の小項目の数 ' チェックボックスの数を合計して配列を初期化 Dim totalCheckboxes As Integer totalCheckboxes = 0 For i = LBound(subItems) To UBound(subItems) totalCheckboxes = totalCheckboxes + subItems(i) Next i ReDim chkBoxes(1 To totalCheckboxes) ' 配列にチェックボックスを格納 index = 1 For i = 1 To UBound(subItems) + 1 For j = 1 To subItems(i - 1) Set chkBoxes(index) = Me.Controls(i & "_" & j) index = index + 1 Next j Next i ' 配列内のチェックボックスを確認 For i = LBound(chkBoxes) To UBound(chkBoxes) Debug.Print "Checkbox " & chkBoxes(i).Name & " Value: " & chkBoxes(i).Value If chkBoxes(i).Value = 1 Then isChecked = True Exit For End If Next i ' 全てのチェックボックスが未チェックの場合の処理 If Not isChecked Then MsgBox "少なくとも一つのチェックボックスを選択してください。", vbExclamation, "選択エラー" End IfEnd Sub
2024年05月14日
コメント(0)
Private Sub CommandButton1_Click() Dim chkBoxes() As Control Dim i As Integer Dim j As Integer Dim isChecked As Boolean Dim index As Integer isChecked = False ' 各大項目の小項目の数 Dim subItems() As Integer subItems = Array(9, 10, 3, 5, 6, 4, 8, 7, 2) ' 例として大項目1から9の小項目の数 ' チェックボックスの数を合計して配列を初期化 Dim totalCheckboxes As Integer totalCheckboxes = 0 For i = LBound(subItems) To UBound(subItems) totalCheckboxes = totalCheckboxes + subItems(i) Next i ReDim chkBoxes(1 To totalCheckboxes) ' 配列にチェックボックスを格納 index = 1 For i = 1 To UBound(subItems) + 1 For j = 1 To subItems(i - 1) Set chkBoxes(index) = Me.Controls(i & "_" & j) index = index + 1 Next j Next i ' 配列内のチェックボックスを確認 For i = LBound(chkBoxes) To UBound(chkBoxes) If chkBoxes(i).Value = True Then isChecked = True Exit For End If Next i ' 全てのチェックボックスが未チェックの場合の処理 If Not isChecked Then MsgBox "少なくとも一つのチェックボックスを選択してください。", vbExclamation, "選択エラー" End IfEnd Sub
2024年05月14日
コメント(0)
Private Sub CommandButton1_Click() Dim chkBoxes(1 To 49) As Control Dim i As Integer Dim isChecked As Boolean isChecked = False ' チェックボックスを配列に格納 For i = 1 To 49 Set chkBoxes(i) = Me.Controls("Checkbox" & i) Next i ' 配列内のチェックボックスを確認 For i = 1 To 49 If chkBoxes(i).Value = True Then isChecked = True Exit For End If Next i ' 全てのチェックボックスが未チェックの場合の処理 If Not isChecked Then MsgBox "少なくとも一つのチェックボックスを選択してください。", vbExclamation, "選択エラー" End IfEnd Sub
2024年05月14日
コメント(0)
Sub SummarizeExcelData() Dim xlApp As Excel.Application Dim wb1 As Excel.Workbook, wb2 As Excel.Workbook, wb3 As Excel.Workbook Dim ws1_1 As Excel.Worksheet, ws2_1 As Excel.Worksheet, ws3 As Excel.Worksheet Dim Total1 As Double, Total2 As Double, Total3 As Double Dim filePath1 As String, filePath2 As String, filePath3 As String ' Excelファイルのパスを設定します(ここで正しいパスに変更してください) filePath1 = "C:\Path\To\集計1.xlsx" filePath2 = "C:\Path\To\集計2.xlsx" filePath3 = "C:\Path\To\集計3.xlsx" ' Excelアプリケーションのインスタンスを作成 Set xlApp = New Excel.Application xlApp.Visible = False ' Excelのウィンドウを非表示にする ' ワークブックを開く Set wb1 = xlApp.Workbooks.Open(filePath1) Set wb2 = xlApp.Workbooks.Open(filePath2) Set wb3 = xlApp.Workbooks.Open(filePath3) ' ワークシートを設定 Set ws1_1 = wb1.Sheets("sheet1") Set ws2_1 = wb2.Sheets("sheet1") Set ws3 = wb3.Sheets("集計3") ' 各セルから値を取得 Total1 = ws1_1.Range("N62").Value Total2 = ws2_1.Range("N62").Value Total3 = ws3.Range("D2").Value ' 結果を表示 ws3.Range("E1").Value = "集計結果" ws3.Range("E2").Value = Total3 & "(" & Total2 & "," & Total1 & ")" ' ワークブックを保存して閉じる wb1.Close False wb2.Close False wb3.Save wb3.Close ' Excelアプリケーションを閉じる xlApp.Quit ' オブジェクトの解放 Set ws1_1 = Nothing Set ws2_1 = Nothing Set ws3 = Nothing Set wb1 = Nothing Set wb2 = Nothing Set wb3 = Nothing Set xlApp = Nothing ' 完了メッセージ MsgBox "集計が完了しました。", vbInformation, "完了" ' "集計3"を開く Set xlApp = New Excel.Application xlApp.Visible = True Set wb3 = xlApp.Workbooks.Open(filePath3) Set ws3 = wb3.Sheets("集計3")End Sub
2024年05月09日
コメント(0)
Sub UpdateExcelSheet() ' Excelオブジェクトを定義 Dim xlApp As Object Dim xlBook As Object Dim xlSheet As Object Dim filePath As String ' Excelファイルのパス filePath = "C:\path\to\your\file.xlsx" ' 実際のファイルパスに変更してください ' Excelアプリケーションを開始 Set xlApp = CreateObject("Excel.Application") ' ファイルを開く Set xlBook = xlApp.Workbooks.Open(filePath) ' "Sheet2"をアクティブにする Set xlSheet = xlBook.Sheets("Sheet2") ' B1からB9までの合計をB10に設定 xlSheet.Range("B10").Value = xlApp.WorksheetFunction.Sum(xlSheet.Range("B1:B9")) ' ファイルを保存して閉じる xlBook.Save xlBook.Close ' Excelアプリケーションを終了 xlApp.Quit ' オブジェクトの解放 Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing MsgBox "更新が完了しました。", vbInformationEnd Sub
2024年05月08日
コメント(0)
Sub AddSheetAndTransferData() Dim excelApp As Object Dim wb As Object Dim ws As Object Dim wsSource As Object Dim filePath As String Dim i As Integer Dim sheetExists As Boolean ' Excelファイルのパスを設定 filePath = "C:\Path\To\Your\ExcelFile.xlsx" ' ここにファイルのパスを入力してください ' Excelアプリケーションを開始 Set excelApp = CreateObject("Excel.Application") excelApp.Visible = True ' Excelを表示 ' 指定されたファイルを開く Set wb = excelApp.Workbooks.Open(filePath) ' Sheet2が存在するかどうかを確認 sheetExists = False For Each ws In wb.Sheets If ws.Name = "Sheet2" Then sheetExists = True Exit For End If Next ws ' Sheet2が存在しなければ追加 If Not sheetExists Then Set ws = wb.Sheets.Add(After:=wb.Sheets(wb.Sheets.Count)) ws.Name = "Sheet2" Else Set ws = wb.Sheets("Sheet2") End If ' A1からA9に1から9までの番号を入力 For i = 1 To 9 ws.Cells(i, 1).Value = i Next i ' Sheet1から特定のデータをSheet2に転送 Set wsSource = wb.Sheets("Sheet1") ' Sheet1が存在すると仮定 Dim cellAddresses As Variant cellAddresses = Array("N2", "N22", "N33", "N37", "N42", "N45", "N51", "N55", "N57") For i = 0 To UBound(cellAddresses) ws.Cells(i + 1, 2).Value = wsSource.Range(cellAddresses(i)).Value Next i ' 変更を保存してファイルを閉じる wb.Save wb.Close ' オブジェクトを解放 Set ws = Nothing Set wsSource = Nothing Set wb = Nothing Set excelApp = NothingEnd Sub
2024年04月26日
コメント(0)
Sub 合計を計算して入力() Dim xlApp As Excel.Application Dim xlWorkbook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim i As Integer Dim sumRange As Excel.Range Dim sumResult As Double Set xlApp = New Excel.Application xlApp.Visible = True ' Excelを表示する ' Excelファイルを開く(ファイルパスは適宜変更してください) Set xlWorkbook = xlApp.Workbooks.Open("C:\path\to\your\excel\file.xlsx") Set xlSheet = xlWorkbook.Sheets("シート名") ' シート名を適宜変更してください ' B列からM列までの合計を計算して、B2からM2に入力 For i = 2 To 13 ' Excelの列番号 B=2, M=13 Set sumRange = xlSheet.Range(xlSheet.Cells(3, i), xlSheet.Cells(21, i)) sumResult = Application.Sum(sumRange) xlSheet.Cells(2, i).Value = sumResult Next i ' 変更を保存し、Excelファイルを閉じる xlWorkbook.Save xlWorkbook.Close xlApp.Quit ' オブジェクトを解放 Set xlSheet = Nothing Set xlWorkbook = Nothing Set xlApp = NothingEnd Sub
2024年04月16日
コメント(0)
Sub FindTopLevelFoldersImproved() Dim wsLog As Worksheet, wsSheet2 As Worksheet Dim lastRow As Long, lastCol As Long, i As Long, j As Long Dim dictFolders As Object, listTopFolders As Object Dim userId As Variant, folderPath As Variant, checkPath As Variant Dim isTopFolder As Boolean Dim row As Long Set wsLog = ThisWorkbook.Sheets("log") Set wsSheet2 = ThisWorkbook.Sheets("Sheet2") Set dictFolders = CreateObject("Scripting.Dictionary") Set listTopFolders = CreateObject("Scripting.Dictionary") lastRow = wsLog.Cells(wsLog.Rows.Count, "A").End(xlUp).Row lastCol = wsLog.Cells(1, wsLog.Columns.Count).End(xlToLeft).Column ' 全てのフォルダパスを収集 For i = 2 To lastRow For j = 4 To lastCol ' D列から始まるアクセス権者ID If wsLog.Cells(i, j).Value = "○" Then folderPath = wsLog.Cells(i, 1).Value userId = wsLog.Cells(1, j).Value If Not dictFolders.Exists(userId) Then Set dictFolders(userId) = CreateObject("Scripting.Dictionary") End If dictFolders(userId)(folderPath) = True End If Next j Next i ' Sheet2をクリア wsSheet2.Cells.ClearContents wsSheet2.Cells(1, 1).Value = "権利者" wsSheet2.Cells(1, 2).Value = "最上層フォルダ" row = 2 ' 最上層フォルダを特定 For Each userId In dictFolders.Keys Set listTopFolders = CreateObject("Scripting.Dictionary") For Each folderPath In dictFolders(userId).Keys isTopFolder = True For Each checkPath In dictFolders(userId).Keys If folderPath <> checkPath And InStr(1, folderPath & "\", checkPath & "\") > 0 Then isTopFolder = False Exit For End If Next checkPath ' フォルダが最上層であればリストに追加 If isTopFolder Then If Not listTopFolders.Exists(folderPath) Then listTopFolders.Add folderPath, True End If End If Next folderPath ' 特定された最上層フォルダをSheet2に出力 For Each folderPath In listTopFolders.Keys wsSheet2.Cells(row, 1).Value = userId wsSheet2.Cells(row, 2).Value = folderPath row = row + 1 Next folderPath Next userId MsgBox "最上層フォルダの特定が完了しました。", vbInformationEnd Sub
2024年02月12日
コメント(0)
Sub FindTopFolderForUser() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("アクセス権情報") ' シート名を指定 Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, 4).End(xlUp).Row ' D列以降にIDが含まれていると仮定 Dim folderColumn As Integer folderColumn = 1 ' フォルダのパスが含まれている列(A列を示す場合) Dim r As Long Dim folderFound As Boolean folderFound = False For r = 3 To lastRow ' 開始行を適切な行に変更してください If ws.Cells(r, 23).Value = "○" Then ' W列に権限のマークがあると仮定 ' 権限がある最上位のフォルダを取得する関数を呼び出して、結果を表示 Dim topFolder As String topFolder = GetTopFolder(ws.Cells(r, folderColumn).Value) If topFolder <> "" Then MsgBox "権限がある最上位のフォルダ: " & topFolder folderFound = True Exit For End If End If Next r If Not folderFound Then MsgBox "指定されたユーザーに権限があるフォルダが見つかりませんでした。" End IfEnd SubFunction GetTopFolder(folderPath As String) As String ' フォルダのパスから最上位のフォルダを取得する関数 Dim folders() As String folders = Split(folderPath, "\") GetTopFolder = folders(UBound(folders) - 1)End Function
2024年02月09日
コメント(0)
Function FindTopFolderWithPermission(username As String, startingRow As Integer, folderColumn As Integer, permissionColumns As Range) As String Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("アクセス権情報") ' シート名を指定 Dim lastRow As Long lastRow = ws.Cells(ws.Rows.Count, folderColumn).End(xlUp).Row Dim i As Integer For i = startingRow To lastRow Dim folderPath As String folderPath = ws.Cells(i, folderColumn).Value ' 権限者のセルが空でないか確認 Dim permissionCell As Range Set permissionCell = permissionColumns.Find(username, LookIn:=xlValues, LookAt:=xlWhole) If Not permissionCell Is Nothing Then ' 権限者が見つかった場合、フォルダの親を取得 Dim parentFolder As String parentFolder = GetParentFolder(folderPath) If parentFolder <> "" Then FindTopFolderWithPermission = parentFolder Exit Function End If End If Next i ' 見つからなかった場合は空文字列を返す FindTopFolderWithPermission = ""End FunctionFunction GetParentFolder(folderPath As String) As String ' フォルダのパスから親フォルダを取得する関数 Dim parentFolder As String Dim parts() As String parts = Split(folderPath, "\") If UBound(parts) > 0 Then ReDim Preserve parts(UBound(parts) - 1) parentFolder = Join(parts, "\") End If GetParentFolder = parentFolderEnd Function申し訳ありません、先ほどのコードを修正します。VBAでは、ユーザー定義関数とサブルーチンを同じモジュール内に直接記述することはできません。代わりに、ユーザー定義関数を含む別のモジュールを作成し、それをサブルーチンから呼び出す必要があります。以下が修正された手順です。1. ユーザー定義関数を新しいモジュールにコピーします。2. サブルーチンのあるモジュールで、新しいモジュールを参照します。具体的な手順は以下の通りです。1. ユーザー定義関数用の新しいモジュールを作成し、以下のコードを貼り付けます。```vbaOption ExplicitFunction FindTopFolderWithPermission(username As String, startingRow As Integer, idColumn As Integer, folderColumn As Integer, permissionColumns As Range) As String Dim ws As Worksheet Dim i As Integer Dim folderPath As String Dim permission As Range ' アクティブなワークシートを取得 Set ws = ThisWorkbook.ActiveSheet ' 最上位のフォルダを初期化 FindTopFolderWithPermission = "" ' 権限があるかどうかをチェック For Each permission In permissionColumns If permission.Value = username Then ' 権限がある場合は、対応する行のフォルダを取得 folderPath = ws.Cells(permission.Row, folderColumn).Value Exit For End If Next permission ' フォルダが見つかった場合、最上位のフォルダを取得 If folderPath <> "" Then Dim folders() As String folders = Split(folderPath, "\") ' 起点から上位のフォルダを取得 If UBound(folders) >= 2 Then FindTopFolderWithPermission = folders(0) & "\" & folders(1) Else FindTopFolderWithPermission = folders(0) End If End IfEnd Function```2. サブルーチンがあるモジュールで、新しいモジュールを参照します。サブルーチンのモジュール内に以下のコードを貼り付けます。```vbaOption ExplicitSub CheckAndMarkIDsOptimized() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("アクセス権情報") ' シート名を指定 Dim lastRow As Long Dim lastCol As Long Dim r As Long, c As Long Dim id As String Dim cellContent As String lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column lastRow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' ID列(D列以降)をループ For c = 4 To lastCol id = ws.Cells(1, c).Value ' IDを取得 ' C列の各行をループしてIDを検索 For r = 2 To lastRow cellContent = ws.Cells(r, 3).Value ' C列の値 ws.Cells(r, c).Value = IIf(InStr(cellContent, id) > 0, "〇", "") ' 該当するIDの場合、「〇」をマーク Next r Next c Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = TrueEnd Sub```このようにすることで、関数とサブルーチンが同じモジュール内に含まれることなく、正しく動作するはずです。
2024年02月09日
コメント(0)
Sub CalculateHierarchyAndAdjustFor5thLevelCorrected() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("アクセス権情報") ' シート名を指定 Dim lastRow As Long Dim r As Long Dim path As String Dim hierarchy As Long Dim adjustedHierarchy As Long lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' A列のデータをループ、3行目から開始 For r = 3 To lastRow path = ws.Cells(r, 1).Value ' 階層数を計算(先頭の \\ を考慮) hierarchy = Len(path) - Len(Replace(path, "\", "")) ' 5階層目を1として階層数を調整 adjustedHierarchy = hierarchy - 4 If adjustedHierarchy < 1 Then adjustedHierarchy = 1 ' 5階層目以下は全て1 ' B列に階層数を入力 ws.Cells(r, 2).Value = adjustedHierarchy ' C列にA列とB列の値を結合して入力 ws.Cells(r, 3).Value = path & " " & adjustedHierarchy Next rEnd Sub
2024年02月08日
コメント(0)
Sub CheckAndMarkIDs() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("log") ' シート名を指定 Dim lastRow As Long Dim lastCol As Long Dim r As Long, c As Long Dim idCell As Range Dim id As String Dim cellContent As String lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column lastRow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' ID列(D列以降)をループ For c = 4 To lastCol Set idCell = ws.Cells(1, c) id = idCell.Value ' IDを取得 ' C列の各行をループしてIDを検索 For r = 2 To lastRow cellContent = ws.Cells(r, 3).Value ' C列の値 If InStr(1, cellContent, id, vbTextCompare) > 0 Then ws.Cells(r, c).Value = "〇" ' 該当するIDの場合、「〇」をマーク Else ws.Cells(r, c).Value = "" ' 該当しない場合はクリア End If Next r Next cEnd SubSub CheckAndMarkIDsOptimized() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("log") ' シート名を指定 Dim lastRow As Long Dim lastCol As Long Dim r As Long, c As Long Dim id As String Dim cellContent As String lastCol = ws.Cells(1, Columns.Count).End(xlToLeft).Column lastRow = ws.Cells(Rows.Count, 3).End(xlUp).Row ' ID列(D列以降)をループ For c = 4 To lastCol id = ws.Cells(1, c).Value ' IDを取得 ' C列の各行をループしてIDを検索 For r = 2 To lastRow cellContent = ws.Cells(r, 3).Value ' C列の値 ws.Cells(r, c).Value = IIf(InStr(cellContent, id) > 0, "〇", "") ' 該当するIDの場合、「〇」をマーク Next r Next c Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = TrueEnd Sub 行の開始位置:For r = 2 To lastRowの部分で指定されています。この例では2行目から開始していますが、3行目から開始したい場合は2を3に変更します。列の開始位置:For c = 4 To lastColの部分で指定されています。この例では4列目(D列)から開始していますが、これは既にあなたの要件に合っています。
2024年02月08日
コメント(0)
サーバー上のサブフォルダーでアドミニストレーター権限がない場合、そのフォルダーを削除するにはいくつかのアプローチがあります。ただし、これらの作業はシステムに深刻な影響を及ぼす可能性があるため、慎重に行う必要があります。以下にいくつかの方法を挙げますが、サーバーのバックアップを取得してから実行してください。1. **所有権の取得**: - フォルダのプロパティに移動し、「セキュリティ」タブを選択します。 - 「詳細設定」をクリックし、「所有者」タブを開きます。 - 「編集」をクリックして、現在のユーザーまたは管理者グループを所有者として設定します。 - 所有者が変更されたら、必要な権限(フルコントロール)を自身に付与します。2. **セーフモードでの操作**: - サーバーをセーフモードで再起動し、セキュリティが緩和された状態でフォルダーの削除を試みます。3. **コマンドラインツールの使用**: - `takeown` コマンドや `icacls` コマンドを使用して、フォルダーの所有権を取得し、必要な権限を設定します。 - 例えば、`takeown /f フォルダー名 /r /d y` コマンドでフォルダーとその中身の所有権を取得できます。 - 次に、`icacls フォルダー名 /grant 管理者名:F /t` コマンドでフルアクセス権限を付与します。4. **サードパーティのツール**: - サードパーティ製のファイル管理ツールを使用して、より高度な権限でフォルダーにアクセスし、削除を試みます。5. **システム管理者への連絡**: - 以上の手段で解決しない場合は、システムまたはネットワークの管理者に相談してください。より高度なツールや方法で対処できる場合があります。操作を行う前に、重要なデータが失われることがないように、対象のフォルダーのバックアップを取ることをお勧めします。また、これらの操作はサーバーのセキュリティポリシーに違反する可能性があるため、実行前に必要な承認を得ることが重要です。
2024年02月02日
コメント(0)
Import-Module ActiveDirectoryGet-ADComputer <コンピュータ名> | Select-Object DistinguishedName
2023年10月24日
コメント(0)
![]()
七田式で右脳開発へようこそいま調べてみたら、高濃度酸素を売り物にしているのたくさんありますね。でも効果あるかどうかはわかりません。以下のことに従って選んでください。1、まず、実際に使ってみてください。 高濃度酸素というものが自分に合うか、ということと、自分が欲しいと思っている器械で効果があるか、両方確認する必要があります。 2、酸素もピンキリあることを理解してください。 酸素入りドリンク、スプレー缶ですが、わたしは効果を感じたことがありません。 酸素バーのようなお店、酸素カプセルは効果がありました。 正直、安かろう、悪かろうはあると思います。 あと、一定時間(15-20分以上?)摂取し続けないとわかりにくいみたいです。 でも、はっきり言います。 高くても、空気清浄機やエアコンで酸素云々と謳っているやつは、高いくせに効果を感じたことはありませんでした。 「どうせなら空気清浄機能もあったほうが…」なんて考えてたら痛い目にあいます。 某ネットワークビジネスに引っかからないよう注意してください。3、あ、すみません。目的を確認しておきましょう。 目的は脳の活性化です。 脳を効率よく活用するためのいちプロセスとしての高酸素摂取です。 右脳開発が目標です。 どの酸素ドリンクが美味か?とかを問題にしているわけではないですから、その点だけお願いします。4、家庭用機器にもいろいろあります。以前紹介したこういうやつ。お金がある方はどうぞ。そういうのはちょっと置いておきまして、ここで述べたいのは、器械のほかに何かを入れないといけないもの、もあるということなんです。ああ、めんどくさいんで具体例を挙げます。営業妨害してごめんなさい。酸素パウダーを入れないといけないらしい。それだけで使えるものを選びましょう。これも悪くないと思います。でも、よく使うのはこれです。【送料無料】ナショナル 酸素エアチャージャー MS-X2-Wやはり、使ったことがあるのは自信持ってお勧めできますからね。あ、この件に関しては、遠慮なく質問ください。
2006年10月13日
コメント(1)
![]()
七田式で右脳開発へようこそhttp://news.mixi.jp/view_news.pl?id=100869&media_id=2 酸素いいっすよね。 この高濃度酸素っていうのは、やってみて結構体感というか実感が出やすいもんですな。 気持ちいいとかすっきりするとかさっぱりするとか。 個人的にそういうのには敏感だから、結構効果出易いんですが、 これはニブチンでも効果がわかりやすいので、お勧めではあります。 2万円くらいで買えたんじゃないかな。【送料無料】ナショナル 酸素エアチャージャー MS-X2-W
2006年10月13日
コメント(0)

七田式で右脳開発へようこそ体調悪くて酸素カプセルに再び行ってきました。すごく効果あり。わたしには。写真はちょっと違うんだけど、たまたま金曜日、テレビで芸能人が自宅で使ってるって言ってた。っていうかいくらすると思ってんの??芸能人ってすごいですよね。このあいだも、あだちゆみの旦那が、結婚1周年の記念日にフォーシーズンホテルの17万の部屋に泊まって、30万のバックあげたって。ちょっと引いた…
2006年10月13日
コメント(0)
七田式で右脳開発へようこそ速聴・超高速音声について興味ありますか?以前にも少し紹介しましたが。結論から先に申しますと、今の時代、高い機械を買わなくても、PCさえあれば自分で作れるんですよね、速聴音声というのか音源というのか知りませんが。ボイスセミナーとか講演会のテープとかそういうのたくさんあるじゃないですか。ああいうの、1.5倍とか2倍とかで聴けると時間の短縮になっていいと思いますよね。何度でも聴けるし。しかも聴き取れるようになると頭の回転もよくなるらしいし。つまり速聴には2つの利点があるわけです。1、時間の短縮2、能力の向上ところがモーツァルトを倍速で聴くということが、この1年くらいで言われるようになったみたいですが、これがホントすごいんですよね。集中の具合が半端じゃないんです。3、クラシックの速聴で脳の活性化さらにさらに、フォーカスCDを販売していらっしゃる渡辺さんとお話したのですが、フォーカスと速聴でさらにUP!なんです。4、フォーカス+速聴でさらにUP!時間が作って、自家製速聴音声の作り方をご案内します。気になる方はいろいろ調べてみてください。ホント人生変わりますよ。
2006年10月13日
コメント(0)
誰しも何かしら他人と違うところがあって、そんなの大げさに言うほどのものじゃないんだけど、でもそれって注目してみると案外面白いかも、なんて思っています。うちの細君は、鋭いです。隠し事は無理です。ぜったい浮気なんかできません。女性の直観、というやつでしょうか??で、わたしはというと、映像力、なんて造語を作ってみちゃいました。なにかが、頭の中で見えるんですね、映像が。これが、なにがすごいって、何の役にも立たない、ってことなんです!!役に立たないですねー。ほら、人の顔覚えるの得意な人っているでしょ?一度見たら忘れないみたいな。…無理。全然無理。大の苦手。異性なんてみんな同じ顔に見えちゃう。対外的にはほんとに何も役に立たないんですが、いい面もあるんです。個人的に。いずれそういう話もしますね。
2006年10月11日
コメント(0)
![]()
フォトリーディングで有名なラーニングソリューションが提供するジーニアスコード…映像イメージという意味では、これが一番でしょうか。集中してかなりトレーニングしたこともあって、すごく効果があるように思います。●ジーニアスコードの成果についてはこちら映像力の話頭脳の果て
2006年10月11日
コメント(0)
![]()
有名なフォトリーディングこれだけは(だけじゃないけど)、なかなか身につかないです。右脳に入っている感じはすごくあるんですが、いわゆる「出力」が下手なんですよね。マスターして、インストラクターになりたいです。で、毎日練習できる施設を作りたいです。図解!あなたもいままでの10倍速く本が読める
2006年10月11日
コメント(0)
映像力の話、最後になります。読んでくれてありがとうございます。映像力には「癒し」の効果があることが分かっています。映像が見えると癒されます。癒されています。あれ?言葉にするとものすごく普通だな…???ほら、ヒーリングなんとか、ってあるじゃないですか>あれが自己生成されるわけですね。脳内麻薬ですよ、きっと。おお、やっぱしすごいじゃん。でも、決定的に体が癒される、抜群に体調がよくなるには、ある条件が必要になります。それは…映像が変化する、ことです。見ている絵が突然変わるんですね。なんというか、A→Bではなく、A→A'って感じなんですけど。これを人によってどう表現するかは微妙なところなんですが、この変化は「瞬間」なんですよ。時間をかけてではなく、ある瞬間ガラッと変わっちゃうんです。その瞬間、「あ、よかった」と感じるんですね~。翌日の体調なんて、半端じゃなくいいですよ。ホント。ま、そんな感じなんですが、いまのわたしのテーマはこれを他人の癒しに利用できないか、なんです。利用できることはわかっているので、ぜひしっかり勉強していきたいと思います。その方向性として、わたしは七田式で右脳開発を選択している、というわけです。
2006年10月11日
コメント(0)
映像力、ていうどうでもいい話の続きです。見えるのは「きれいな映像」です。写真というか動画というか。一番多いのは「水」関係ですね。川とか湖とか泉とか。あ、なんか流れてる…水が…なんて思いながら見てます。あとは、森とか木とか光とか。木漏れ日みたいなのとかね。で、これが見えるとどうなのか、なんですが、対外的にはともかく、主体的には大変な効果があるんです、これ。だからまぁ、長々といろいろ書いてるんですが…。そんなこんなで今気になっているのがこちら。七田式ミラクルサウンドBOXあ、勝手に「七田式」なんて付けちゃいけないんだ…絶対効果あると思うんだけど、費用対効果がな~
2006年10月11日
コメント(0)
さっきまで子供相手に気功をやってたんですが、見えてきましたよ、なんか映像が。夕日、です。そんなに広くない平地があって、木が一本あって、夕日が差してる感じ。一面夕焼け色というよりは黄金色でした。
2006年10月11日
コメント(0)
![]()
livedoor ニュース毎日支局長の飲酒運転記事 ネットで批判受ける いや、ほんとその通りだよ!あんたら飲酒運転したことないの?飲酒運転の車に同乗したことないの?飲酒運転見て見ぬ振りしたことないの?小説やマンガに出てくる飲酒運転にきちんと抗議したの?「自分は善人です。飲酒運転なんて信じられない!」っていう面の皮が厚いやつ多くないか?北欧のほうの飲酒運転してるとエンジンかからない機械、酒飲んでないやつが代わりにフーってやればいいじゃん、って考えたやついるだろう?善人面してんじゃねぇよ!
2006年09月28日
コメント(0)
いつまで公開なのかわからないけど、青木選手の怖い怖い映像…当時は青木選手のことぜんぜん興味がなくって、でもこの試合結果はよく覚えてる。「え~○っちゃったんだー。すごい荒っぽい日本人がいるんだなー。」荒っぽい、だったか、乱暴な、だったかそんな印象が頭にこびりついてた。やっぱり出てくる人は出てくるんだねー。
2006年09月26日
コメント(0)
http://mycasty.jp/ikeda/index_bbs.html池田聡の柔術パラダイス☆ていうか、みんな書き込もうよ!常連さんどうしたんだ??
2006年09月26日
コメント(0)
先日のSら田氏とM地氏のGiアマのビデオを、ワイズにあるPCでみせてもらった。そしたら、後ろからI出先生が、「あれ、これTップじゃねぇか?」って。なるほどこの人が伝説のTップさんか…。でもこのビデオでも青木選手のDVDに続いて絶叫していない。今回はタップすらしていない。まあ、白衣着てそんなことしてたら、自分が病院送りになっちゃうだろうから。今度(当選の連絡が本当に来たら)観に行くGiグラップリング、これの後援に「整骨院シケヤス」が入っているようなので。。。こりゃ、生Tップ氏が拝める…。いっしょに写真撮ってもらおう。青木選手はどうかな~。同日、大晦日級のカードがある方に行っちゃうかな~。というか青木選手がGiグラップリングに出ないことが不思議…。
2006年09月26日
コメント(0)
体調悪くて酸素カプセルと言うものに行ってきました。すごく効果あり。わたしにはね。写真はちょっと違うんだけど、たまたま金曜日、テレビで芸能人が自宅で使ってるって言ってた。っていうかいくらすると思ってんの??芸能人ってすごいよね。このあいだも、あだちゆみの旦那が、結婚1周年の記念日にフォーシーズンホテルの17万の部屋に泊まって、30万のバックあげたって。ちょっと引いた…
2006年09月25日
コメント(0)
全200件 (200件中 1-50件目)


